Metadata-Version: 2.4
Name: notlang
Version: 0.9.25
Summary: GIS uchun soddalashtirilgan buyruqlar tili (Python ustida ishlaydi) — Uzbek-friendly domain-specific language for GIS/RS
Author-email: Xushnudbek Rahimberganov <notgis@proton.me>
License-Expression: MIT
Project-URL: Homepage, https://notgis.top
Project-URL: Repository, https://github.com/notGIS/notlang
Project-URL: Issues, https://github.com/notGIS/notlang/issues
Keywords: gis,remote-sensing,geospatial,dsl,uzbekistan,earth-engine,copernicus
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Intended Audience :: Science/Research
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: geopandas>=0.14
Requires-Dist: rasterio>=1.3
Requires-Dist: matplotlib>=3.7
Requires-Dist: numpy>=1.24
Requires-Dist: shapely>=2.0
Requires-Dist: scipy>=1.10
Requires-Dist: lark>=1.1
Requires-Dist: requests>=2.28
Requires-Dist: pyproj>=3.5
Provides-Extra: jupyter
Requires-Dist: ipython>=8.0; extra == "jupyter"
Requires-Dist: ipyleaflet>=0.17; extra == "jupyter"
Provides-Extra: gee
Requires-Dist: earthengine-api>=0.1; extra == "gee"
Provides-Extra: interpolation
Requires-Dist: pykrige>=1.7; extra == "interpolation"
Provides-Extra: cartography
Requires-Dist: mapclassify>=2.6; extra == "cartography"
Requires-Dist: matplotlib-scalebar>=0.8; extra == "cartography"
Provides-Extra: threed
Requires-Dist: plotly>=5.0; extra == "threed"
Requires-Dist: pyvista>=0.44; extra == "threed"
Requires-Dist: trame>=3.0; extra == "threed"
Requires-Dist: trame-vtk>=2.0; extra == "threed"
Requires-Dist: trame-vuetify>=2.0; extra == "threed"
Requires-Dist: nest_asyncio2>=1.0; extra == "threed"
Provides-Extra: spectral
Requires-Dist: spyndex>=0.5; extra == "spectral"
Provides-Extra: hydrology
Requires-Dist: pysheds>=0.4; extra == "hydrology"
Provides-Extra: spatial-stats
Requires-Dist: scikit-learn>=1.3; extra == "spatial-stats"
Requires-Dist: esda>=2.5; extra == "spatial-stats"
Requires-Dist: libpysal>=4.9; extra == "spatial-stats"
Provides-Extra: cartography-extra
Requires-Dist: rasterstats>=0.19; extra == "cartography-extra"
Requires-Dist: contextily>=1.5; extra == "cartography-extra"
Provides-Extra: timeseries
Requires-Dist: xarray>=2023.1; extra == "timeseries"
Requires-Dist: rioxarray>=0.15; extra == "timeseries"
Provides-Extra: parquet
Requires-Dist: pyarrow>=14.0; extra == "parquet"
Provides-Extra: network
Requires-Dist: osmnx>=1.9; extra == "network"
Provides-Extra: webmap
Requires-Dist: folium>=0.15; extra == "webmap"
Provides-Extra: vector-io
Requires-Dist: fiona>=1.9; extra == "vector-io"
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: pytest-cov>=4.0; extra == "test"
Provides-Extra: full
Requires-Dist: ipython>=8.0; extra == "full"
Requires-Dist: ipyleaflet>=0.17; extra == "full"
Requires-Dist: earthengine-api>=0.1; extra == "full"
Requires-Dist: pykrige>=1.7; extra == "full"
Requires-Dist: mapclassify>=2.6; extra == "full"
Requires-Dist: matplotlib-scalebar>=0.8; extra == "full"
Requires-Dist: plotly>=5.0; extra == "full"
Requires-Dist: pyvista>=0.44; extra == "full"
Requires-Dist: trame>=3.0; extra == "full"
Requires-Dist: trame-vtk>=2.0; extra == "full"
Requires-Dist: trame-vuetify>=2.0; extra == "full"
Requires-Dist: nest_asyncio2>=1.0; extra == "full"
Requires-Dist: spyndex>=0.5; extra == "full"
Requires-Dist: pysheds>=0.4; extra == "full"
Requires-Dist: scikit-learn>=1.3; extra == "full"
Requires-Dist: esda>=2.5; extra == "full"
Requires-Dist: libpysal>=4.9; extra == "full"
Requires-Dist: rasterstats>=0.19; extra == "full"
Requires-Dist: contextily>=1.5; extra == "full"
Requires-Dist: xarray>=2023.1; extra == "full"
Requires-Dist: rioxarray>=0.15; extra == "full"
Requires-Dist: pyarrow>=14.0; extra == "full"
Requires-Dist: osmnx>=1.9; extra == "full"
Requires-Dist: folium>=0.15; extra == "full"
Requires-Dist: fiona>=1.9; extra == "full"
Provides-Extra: colab
Requires-Dist: ipyleaflet>=0.17; extra == "colab"
Requires-Dist: earthengine-api>=0.1; extra == "colab"
Requires-Dist: pykrige>=1.7; extra == "colab"
Requires-Dist: mapclassify>=2.6; extra == "colab"
Requires-Dist: matplotlib-scalebar>=0.8; extra == "colab"
Requires-Dist: spyndex>=0.5; extra == "colab"
Requires-Dist: pysheds>=0.4; extra == "colab"
Requires-Dist: esda>=2.5; extra == "colab"
Requires-Dist: libpysal>=4.9; extra == "colab"
Requires-Dist: rasterstats>=0.19; extra == "colab"
Requires-Dist: contextily>=1.5; extra == "colab"
Requires-Dist: rioxarray>=0.15; extra == "colab"
Requires-Dist: pyarrow>=14.0; extra == "colab"
Requires-Dist: osmnx>=1.9; extra == "colab"
Requires-Dist: fiona>=1.9; extra == "colab"
Dynamic: license-file

# notLang

**GIS va geografik ma'lumotlarni tahlil qilish uchun soddalashtirilgan skript tili.**

notLang — Python ustida ishlaydigan, o'zbek tiliga qulay (ikki tilli:
o'zbekcha/inglizcha) domenga xos til (DSL) bo'lib, vektor/rastr GIS
tahlili, sun'iy yo'ldosh ma'lumotlari (Google Earth Engine, Copernicus/
Sentinel Hub, NASA GIBS, WorldClim), fazoviy statistika (Moran's I,
LISA, DBSCAN), yo'l tarmog'i tahlili (OpenStreetMap/osmnx) va boshqa
155 ta buyruqni bitta sodda sintaksisda birlashtiradi.

```
load "hudud.geojson" as h
buffer h 500 -> bufer
connect gee
get "COPERNICUS/S2_SR_HARMONIZED" date "2026-06-01" "2026-06-30" bbox bufer cloud_mask index "NDVI(B8,B4)" -> ndvi
zonal_stats ndvi with h stats "mean,max" -> natija
table natija to "hisobot.html"
```

## O'rnatish

```bash
pip install notlang[full]
```

Faqat asosiy (yengil) o'rnatish uchun: `pip install notlang`
(qo'shimcha imkoniyatlar — GEE, 3D, gidrologiya va h.k. — kerak
bo'lganda alohida `extras` orqali qo'shiladi, masalan
`pip install notlang[gee,cartography]`).

Talab: **Python 3.9 yoki yangiroq**.

| Extra | Nima qo'shadi |
|---|---|
| `full` | Quyidagilarning deyarli hammasi (tavsiya etiladi) |
| `colab` | Colab uchun yengil to'plam (Colab'dagi tayyor paketlarni qayta tortmaydi) |
| `gee` | Google Earth Engine |
| `jupyter` | `%load_ext notlang`, ipyleaflet vidjetlari |
| `webmap`, `threed` | Interaktiv xarita (folium); 3D (plotly, pyvista) |
| `spectral`, `hydrology`, `interpolation` | Spektral indekslar; gidrologiya; kriging |
| `spatial-stats`, `timeseries`, `network` | Moran/LISA/DBSCAN; vaqt seriyasi; OSM tarmog'i |
| `cartography`, `cartography-extra`, `parquet`, `vector-io` | Xarita bezaklari; zonal/fon xaritalar; Parquet; Fiona |

### Windows (CMD / PowerShell)

```powershell
py -m venv .venv
.venv\Scripts\activate
pip install notlang[full]
notlang --version
```

Agar `notlang` buyrug'i "topilmadi" desa (Scripts papkasi PATH'da
yo'q), Python orqali ishga tushiring — natija bir xil:

```powershell
python -m notlang skript.ntl
```

### Google Colab

Colab'da eng qulay yo'l — `colab` extra'sini o'rnatish. Bu deyarli
barcha imkoniyatlarni (GEE, gidrologiya, interpolyatsiya, tarmoq
tahlili va h.k.) qo'shadi, lekin Colab'da allaqachon mavjud bo'lgan
og'ir paketlarni (ipython, plotly, scikit-learn, xarray, folium) va
Colab'da odatda kerak bo'lmaydigan og'ir 3D stekni (pyvista/vtk/trame,
`full`da bor) o'zi bilan qayta tortmaydi — shu bilan o'rnatish ancha
tezroq va yengilroq bo'ladi:

```python
!pip install -q notlang[colab]
```

3D vizualizatsiya (`show3d`) kerak bo'lsa, uni alohida qo'shing:
`!pip install -q notlang[threed]`.

## Ishga tushirish

```bash
notlang                  # interaktiv rejim (REPL)
notlang skript.ntl        # skript faylini ishga tushirish
notlang init loyiha       # yangi loyiha shabloni yaratish
notlang --version         # versiya
notlang --about           # muallif/loyiha haqida
python -m notlang ...     # yuqoridagilarning barchasi, PATH'siz ham ishlaydi
```

Jupyter/Google Colab'da:

```python
%load_ext notlang
```
```
%%notlang
load "hudud.geojson" as h
info h
```

## Asosiy imkoniyatlar

- **Vektor/rastr GIS**: buffer, klip, zonal statistika, reklassifikatsiya, gidrologiya, interpolyatsiya (IDW/kriging)
- **Sun'iy yo'ldosh platformalari**: Google Earth Engine (server-tomon bulut-niqoblash, indeks hisoblash, Drive/Asset eksport), Copernicus/Sentinel Hub (6 kolleksiya, Statistical API), NASA GIBS, STAC
- **Iqlim ma'lumotlari**: WorldClim (o'rtacha, tarixiy, CMIP6 kelajak prognozlari)
- **Fazoviy statistika**: Moran's I, LISA, DBSCAN, K-Means, hotspot (Getis-Ord Gi*)
- **Yo'l tarmog'i**: OpenStreetMap orqali (osmnx) — yuklash, marshrut, kalitsiz
- **Boshqa ochiq manbalar**: GADM, Natural Earth, GBIF, USGS zilzilalar, NASA POWER, SoilGrids, OpenAerialMap, Microsoft Building Footprints va h.k.
- **Vizualizatsiya**: statik xaritalar, interaktiv veb-xaritalar (Jupyter'da vidjet, boshqa joyda standalone HTML), 3D ko'rinish, diagrammalar
- **Ikki tillilik**: `language "uz"` bilan barcha xabarlar o'zbek tiliga o'tadi
- **Xavfsiz formulalar**: `bandmath` va `filter ... where` shartlari cheklangan (faqat arifmetika/taqqoslash) — ixtiyoriy Python kodi bajarilmaydi
- **Versiyalash**: `versioning "on"` bilan saqlangan fayllar ustidan yozilmaydi, har biri vaqt tamg'asi bilan saqlanadi

## Hujjatlar

To'liq qo'llanmalar (Colab, Windows CMD/PowerShell, GEE, Copernicus,
ochiq API'lar va yangi buyruqlar bo'yicha alohida-alohida) loyiha
repozitoriysida: https://github.com/notGIS/notlang

## VS Code kengaytmasi

Rasmiy **notLang** kengaytmasi (v0.9.25): sintaksis yoritish, IntelliSense
(155 buyruq), 26 ta snippet, `Ctrl+Shift+Enter` bilan skriptni ishga
tushirish, REPL va natijani (webmap, 3D, diagramma) VS Code ichida
avtomatik ochish. Kengaytma notLang'ni o'zi topadi (venv, `notlang` yoki
`python -m notlang`), Windows'da ham. VS Code Marketplace'da "notLang"
deb qidiring yoki `.vsix` faylni o'rnating (Cursor'da ham ishlaydi).

## Muallif

**Xushnudbek Rahimberganov**
Sayt: https://notgis.top
Email: notgis@proton.me

## Litsenziya

MIT
