Closed pigreco closed 1 year ago
Il mistero si infittisce, ho preso dallo screenshot di sopra valore dell'attributo ClassREF ed eseguito il comando:
ogrinfo DBGT_10K_22_V01.gdb -dialect SQLite -sql "SELECT * FROM EDIFC_CR_EDF_ME_SR WHERE ClassREF = 'EDIFC_600019'"
sotto l'output:
Had to open data source read-only.
INFO: Open of `DBGT_10K_22_V01.gdb'
using driver `OpenFileGDB' successful.
Layer name: SELECT
Geometry: Multi Polygon
Feature Count: 1
Extent: (482810.544000, 4310434.362000) - (482830.544000, 4310454.362000)
Layer SRS WKT:
PROJCRS["RDN2008 / UTM zone 32N",
BASEGEOGCRS["RDN2008",
DATUM["Rete Dinamica Nazionale 2008",
ELLIPSOID["GRS 1980",6378137,298.257222101,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",6706]],
CONVERSION["UTM zone 32N",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",9,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9996,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",500000,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",0,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["GIS."],
AREA["Italy - onshore and offshore - west of 12°E."],
BBOX[36.53,5.94,47.04,12]],
ID["EPSG",7791]]
Data axis to CRS axis mapping: 1,2
Geometry Column = Shape
ClassREF: String (0.0)
SubRegID: String (0.0)
CR_EDF_POR: String (0.0)
Shape_Length: Real (0.0)
Shape_Area: Real (0.0)
OGRFeature(SELECT):0
ClassREF (String) = EDIFC_600019
SubRegID (String) = EDIFC_ME_SR_499558
CR_EDF_POR (String) = 05
Shape_Length (Real) = 62.8318530717959
Shape_Area (Real) = 314.159265358979
MULTISURFACE (CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (482820.544 4310454.362,482830.544 4310444.362,482820.544 4310434.362,482810.544 4310444.362,482820.544 4310454.362))))
ultima riga, si legge MULTISURFACE
Ma se fai il contrario e fai un select count per tutti i multipolygon che risultato hai?
Ma se fai il contrario e fai un select count per tutti i multipolygon che risultato hai?
ogrinfo DBGT_10K_22_V01.gdb -dialect SQLite -sql "SELECT count(*) FROM EDIFC_CR_EDF_ME_SR"
---
Had to open data source read-only.
INFO: Open of `DBGT_10K_22_V01.gdb'
using driver `OpenFileGDB' successful.
Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
count(*): Integer (0.0)
OGRFeature(SELECT):0
count(*) (Integer) = 499630
ogrinfo DBGT_10K_22_V01.gdb -dialect SQLite -sql "SELECT count(*) FROM EDIFC_CR_EDF_ME_SR WHERE ST_GeometryType(SHAPE)='MULTIPOLYGON'"
---
Had to open data source read-only.
INFO: Open of `DBGT_10K_22_V01.gdb'
using driver `OpenFileGDB' successful.
Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
count(*): Integer (0.0)
OGRFeature(SELECT):0
count(*) (Integer) = 499630
nessuna differenza nel conteggio, ciò mi fa pensare che SQL spaziale non fa differenza tra MULTIPOLYGON e MULTISURFACE
@aborruso chiudo issue?
Totò ma non riesci a estrarre un sotto insieme di pochi layer?
5 Gb è troppo.
Se riesci, prima di inviarlo, verifica che il problema permane anche sul file più piccolo.
@aborruso Qui un FileGDB da 150 MB con solo un layer (EDIFC_CR_EDF_ME_SR)
https://mega.nz/file/UZBV0SYa#CXdNW7qcJoRppL_wvBNLO-_bRzSg7mtBRavKPvmIv-I
ma con questo non riesco a fare nulla neanche ogrinfo -so x_Andy_only_Polygon2.gdb
ma con questo non riesco a fare nulla neanche
ogrinfo -so x_Andy_only_Polygon2.gdb
devi dare ogrinfo -so -al x_Andy_only_Polygon2.gdb EDIFC_CR_EDF_ME_SR
Che faccio su questo?
Che faccio su questo?
nel layer ci sono circa 500k record di tipo MultiPolygon, ma secondo me ci sono 75 record di tipo Multisurface. Ma non riesco a selezionare le Multisurface usando ogr:
ogrinfo x_Andy_only_Polygon2.gdb -dialect SQLite -sql "SELECT * FROM EDIFC_CR_EDF_ME_SR WHERE ST_GeometryType(SHAPE)!='MULTIPOLYGON'"
Ok, domani ci guardo. Oggi cena con parenti :)
Caro @pigreco a me risultano 150 i multisurface
ogrinfo -sql "select count(*) from EDIFC_CR_EDF_ME_SR where OGR_Geometry LIKE 'MULTISURFACE'" x_Andy_only_Polygon2.gdb EDIFC_CR_EDF_ME_SR
ottimo @aborruso
Caro @pigreco a me risultano 150 i multisurface
la tua query non è una query spaziale, ovvero non utilizza funzioni che analizzano la geometria, ma cercano un valore OGR_Geometry LIKE 'MULTISURFACE'
, giusto?
in altri termini, perché non va ST_GeometryType(SHAPE)!='MULTIPOLYGON'
questa?
in altri termini, perché non va
ST_GeometryType(SHAPE)!='MULTIPOLYGON'
questa?
totò non ho idea, avevo 5 minuti stamattina e volevo trovare un metodo che ti facesse arrivare all'obiettivo di filtrare.
È una query per tipo di geometria. Quel campo è un campo stringa, diviso per categorie geometriche.
@aborruso per favore metti un link per l'attributo OGR_Geometry
, non riesco a trovare una documentazione, grazie
Ricetta fatta e pubblicata
https://tansignari.opendatasicilia.it/ricette/bash/ricerca_geometrytype_ogrinfo/
Per una verifica, sto cercando nel layer
EDIFC_CR_EDF_ME_SR
(~500k row), presente nel FileGDBDBGT_10K_22_V01.gdb
, la presenza di GeometryType differenti da MULTIPOLYGON, quindi utilizzo questo costrutto:ma ottengo uno strano risultato:
intanto, leggo
Layer name: SELECT
e poi COUNT 0.Ma se lancio:
ogrinfo -al DBGT_10K_22_V01.gdb EDIFC_CR_EDF_ME_SR | grep MultiSurface
ottengo 75 record.
DBGT_10K_22_V01.gdb (+5GB)