Více

ST_Intersect s ogr2ogr a Spatialite

ST_Intersect s ogr2ogr a Spatialite


Snažím se protínat datové sady Spatialite s ogr2ogr, virtuálním formátem OGR a syntaxí SQL. Zdá se, že nemohu najít, zda je chyba v mém dotazu SQL nebo v mém souboru VRT.

Data

rice_temperature.sqlite | Prostorová databáze obsahující 1 vrstvu „rice_temp“

rice_elevation.sqlite | Prostorová databáze obsahující 1 vrstvu „rice_elev“

rice_vectors.vrt

  rice_temperature.sqlite  rice_elevation.sqlite

Vše ve stejném adresáři, ze kterého také spouštím ogr2ogr.

Dotaz

ogr2ogr -f "ESRI Shapefile" intersection.shp rice_vectors.vrt -dialect sqlite -sql "SELECT ST_Intersection (rice_temperature.geometry, rice_elevation.geometry) AS geometry FROM rice_temp, rice_elev"

Chyby

Zkoušel jsem řadu variant souboru VRT i samotného dotazu SQL. Všechny chyby jsou buď žádný takový stůl: teplota rýže nebo Nelze otevřít zdroj dat 'rice_elevation'

Mám pocit, že jsem blízko, ale nemohu si omotat hlavu nad tím, co dělám špatně - je to dotaz SQL nebo moje použití virtuálního formátu OGRs?


Pomocí vašeho souboru VRT se GDAL pokusí z cílových databází najít vrstvy „teplota“ a „nadmořská výška“. Buď použijte původní názvy vrstev ve VRT vVrstva OGRVRTnázev: „rice_temp“ a „rice_elev“, přejmenujte je pomocíSrcLayer

  rice_temperature.sqlite rice_temp  rice_elevation.sqlite rýže_lev

Otestujte pomocí ogrinfo, zda je váš VRT správný a jsou nalezeny dvě vrstvy.

Když jste vytvořili VRT, co je za, je skryto před ogr2ogr. Jediné vrstvy, které můžete použít v SQL, jsou ty, které jste definovali ve VRT. O zbytek se postará GDAL: přistupujete k „teplotě“ a GDAL ví, že z „rice_temperature.sqlite“ čte „rice_temp“.

ogr2ogr -f "ESRI Shapefile" intersection.shp rice_vectors.vrt -dialect sqlite -sql "SELECT ST_Intersection (a.geometry, b.geometry) AS geometry FROM temperature a, elevation b"

Podívejte se na video: QGIS-SPATİALİTE