Come posso insegnare a ogr2ogr una proiezione?


11

Ho generato JSON da ArcGIS che voglio convertire in GeoJSON in EPSG 4326. Questo non riesce:

$ ogr2ogr -f GeoJSON -t_srs EPSG:4326 out.geo.json in.arcgis.json OGRGeoJSON
ERROR 6: EPSG PCS/GCS code 102100 not found in EPSG support files.  Is this a valid
EPSG coordinate system?

Ho trovato un post sul forum che dice che 102100 può essere modificato in 3857, che è matematicamente identico. Quindi, funziona, con lo stesso messaggio di errore:

$ ogr2ogr -f GeoJSON -s_srs EPSG:3857 -t_srs EPSG:4326 out.geo.json in.arcgis.json OGRGeoJSON 
ERROR 6: EPSG PCS/GCS code 102100 not found in EPSG support files.  Is this a valid
EPSG coordinate system?

Tuttavia, ho diversi file nel sistema di proiezione 102100. Vorrei insegnare a ogr2ogr la proiezione 102100, in modo da poter scrivere la conversione. C'è un modo per aggiornare la configurazione in modo che 102100 venga riconosciuto e trattato come 3857?

Aggiornamento : questi dati provengono dall'API REST di ArgGIS Server 9.3.1. Se non specifico un riferimento spaziale di output, ottengo 102100, che definiscono il sistema di coordinate proiettato "WGS_1984_Web_Mercator_Auxitime_Sphere" . Un modo molto più semplice per raggiungere il mio obiettivo è chiedere la proiezione desiderata, con il outSR=4326parametro query. La domanda è ancora valida se non si ha accesso ai dati originali.

Risposte:


11

Dato che 102100 e 3857 sono matematicamente identici, penso che tu possa tranquillamente ignorare gli errori e continuare semplicemente con l'override dei source srs usando il flag -s_srs .

Puoi provare ad aggiungere la definizione per 102100 nel tuo $ GDAL_DATA $ ma non è davvero raccomandato. Se vuoi davvero farlo, ecco il metodo e l'avvertimento di accompagnamento di Frank Warmerdam :

I file .csv sono principalmente destinati ai sistemi di coordinate EPSG, quindi non è davvero appropriato estenderli manualmente.

Ma puoi aggiungere i tuoi dizionari personalizzati in un modo simile a gdal / data / cubewerx_extra.wkt. Questi file di dizionario sono costituiti da righe con un nome breve, una virgola e quindi la definizione WKT del sistema di coordinate.

Puoi fare riferimento a tale definizione da SetFromUserInput () e dai programmi che usano quella funzione (come s_srs, a_srs, t_srs per gdal_translate, ogr2ogr e gdalwarp) usando il modulo:

gdal_translate -a_srs DICT: cubewerx_extra.wkt, 41001

Spero che questo possa essere d'aiuto. In bocca al lupo!


1
Grazie, ho fatto qualcosa di simile a quello che mi hai suggerito. La mia $GDAL_DATA$directory è su /usr/local/share/gdale EPSG 3857 è definito pcs.csvin quella cartella. Ho copiato quella riga pcs.override.csve ho cambiato l'ID (prima colonna) da 3857 a 102100. A quel punto, le conversioni funzionavano senza la -s_srsbandiera. La soluzione a lungo termine era quella di ottenere i miei dati di origine in una proiezione nota, in modo che potessi usare ogr2ogr per la sola conversione del formato, piuttosto che mescolare in proiezioni.
jwhitlock,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.