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.