¿Usa shp2pgsql en lugar de ogr2ogr para importar shapefile a PostGIS? [cerrado]

8

Bien podría estar haciendo algo mal aquí, pero:

Si importo algún shapefile a una base de datos PostGIS usando shp2pgsql , primero tengo que averiguar el SRID / EPSG de ese shapefile. Creo que este es, como mínimo, un proceso de dos pasos. Primero consulto el archivo de forma así:

>ogrinfo -al -so someshapefile.shp

que devuelve la información de proyección de texto (wkt) conocida, pero es un poco detallado y algo opaco [para mí]. Algo como:

GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
    SPHEROID["GRS 1980",6378137,298.257222101,
        AUTHORITY["EPSG","7019"]],
    AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0,
    AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
    AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]]

Luego, normalmente ejecuto la información de wkt a través de una herramienta de conversión como Prj2EPSG para encontrar el EPSG / SRID.

En este punto, puedo importar el archivo de forma usando:

>shp2pgsql -I -s 4269 someshapefile.shp <schema>.<table> | psql -U <user> -d <dbname> -h <hostaddress> -p 5432

Nota, especifico el SRID con la -sbandera.

Si ejecuto shp2pgsql sin especificar el SRID, no se establece ninguna proyección y creo que la columna geom debe actualizarse manualmente para incluir una proyección.

Alternativamente, puedo omitir la búsqueda y simplemente usar ogr2ogr :

>ogr2ogr -f "PostgreSQL" "PG:host=<hostaddress> user=<user> dbname=<dbname> password=<password>" "C:/shapefile.shp" -nln <schema>.<table>

que aparentemente establece bien la proyección, presumiblemente extrayéndola automáticamente desde el archivo de forma / prj fuente.

Pregunta

Entonces, ¿cuál es la desventaja de usar ogr2ogr? ¿De hecho hay una bandera para que shp2pgsql extraiga automáticamente y establezca la proyección correcta también? ¿Si no, porque no?


Apéndice

Hay un análisis comparativo interesante, quizás algo anticuado, del uso de ogr2ogr vs shp2pgsql disponible en naturalgis.pt . Demuestra, para sus datos de muestra particulares, que ogr2ogr funciona significativamente mejor en conjuntos de datos pequeños , pero que shp2pgsql funciona ligeramente mejor en conjuntos de datos más grandes .

No creo que esto proporcione una respuesta definitiva. Las bases de código pueden haber evolucionado, mejorando el rendimiento de cada uno. Solo han probado un conjunto muy pequeño de datos de muestra. El conjunto de datos representativo "grande" no es realmente tan grande. Además, se trata principalmente de cuestiones de rendimiento, que ciertamente afectan la usabilidad, pero la pregunta original está más interesada en los requisitos de entrada del usuario relacionados con la usabilidad.

jac
fuente
1
No creo que haya tenido un archivo de forma en el que haya dudado del SRS. Ciertamente, he tenido archivos de forma que me han obligado a cuestionar mi voluntad de vivir en muchos otros niveles, pero el problema es cuál es el mejor entorno para analizar un formato limitado de 2 Gb obsoleto, que permite todo tipo de geometrías auto-intersectadas y así muchos otros horrores no es uno de ellos.
John Powell

Respuestas:

4

Sin hablar con los desarrolladores de shp2pgsql, mi respuesta está basada en una opinión, pero al menos shp2pgsql es mucho más fácil sin la detección automática de la proyección. La parte principal del código fuente es aproximadamente 1800 líneas http://postgis.net/docs/doxygen/2.2/d8/da3/shp2pgsql-core_8c_source.html y hace lo que es esencial: convierte las geometrías y los atributos de los archivos de forma en PostGIS.

En las fuentes de GDAL, el código que solo se encarga de interpretar los archivos .prj de ESRI es 2700 líneas https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogr_srs_esri.cpp .

Pros y contras:

Para los usuarios, las principales ventajas de shp2pgsql son:

La principal desventaja de shp2pgsql es que solo admite archivos de forma.

GDAL y ogr2ogr ofrecen las mismas funcionalidades para shapefiles que shp2pgsql, pero GDAL puede manejar decenas de formatos vectoriales diferentes https://gdal.org/ogr_formats.html y ofrece muchas más opciones para seleccionar y procesar datos durante la conversión. Sin embargo, con GDAL

  • El usuario debe instalar GDAL
  • El usuario debe aprender a usar GDAL, especialmente ogr2ogr y las muchas opciones del controlador PostGIS
  • ogr2ogr es una utilidad de línea de comandos sin GUI
usuario30184
fuente
Tiene un punto válido: la lógica para analizar el archivo .prj es complicada y tiene casos de esquina sin abordar. Mi pregunta, sin embargo, está relacionada principalmente con la usabilidad de las herramientas.
jac
ogr2ogr y gdal son males necesarios, pero su punto es bueno: no son obvios y tienen una curva de aprendizaje. shp2pgsql hace lo que dice en la lata.
John Powell