4 votos

Entorno mixto PostGIS y ArcSDE

Estoy tratando de configurar una geodatabase empresarial con ArcGIS 10.4.1 y PostgreSQL 9.4 donde puedo usar PostGIS para mis consultas SQL en PostgreSQL y tener la funcionalidad sde.

Tengo un ordenador con Windows.

Mi proceso hasta ahora era:

  1. instalar postgresql/postgis
  2. copiar el dll st_geometry a la librería postgresql
  3. ejecutar la creación de la geodatabase de la empresa
  4. crear login sde

luego inserté los datos de un archivo GDB en esa conexión databse y funcionó como sde pero fui a usar un simple st_union postgis funciones como esta

select st_union(shape) geom from base_layers.hl_huc

y obtuve este error

ERROR:  function st_union(st_geometry) does not exist
LINE 1: select st_union(shape) geom from base_layers.hl_huc
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********

ERROR: function st_union(st_geometry) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 8

Por favor, alguien puede decirme instrucciones detalladas sobre cómo puedo conseguir que PostGIS funcione para esta base de datos.

Me encontré con este pdf pero es para versiones antiguas de arc y PostgreSQL y las instrucciones no son muy claras. Por ejemplo en la página 15 uno de los pasos es Edit a SDE config file and a PostgreSQL one bastante vago...

Ran create extension PostGIS en la base de datos. Todas las funciones de Postgis están ahí, pero no puedo utilizarlas.

¿Quizás haya una forma de cambiar entre los backends de tipo espacial?

CONCLUSIÓN

El tercer punto de Vince me llevó por el camino de averiguar cómo tener el versionado y la edición de ArcGIS SDE manteniendo el backend de PostGIS. Tenga en cuenta que puede haber hecho más complicado de lo que tenía que ser, pero sin embargo lo resolvió

pasos

  1. copiar st_geometry de.dll C:\Program Archivos (x86) \ArcGIS\Desktop10.4\DatabaseSupport\PostgreSQL\9.4\Windows64 a C:\Program Archivos \PostgreSQL\9.4\lib (o cualquier versión de arc y postgresql que tengas)
  2. ejecute la herramienta de esri "create enterprise geodatabase" (esta herramienta creará una nueva base de datos postgresql con el nombre de inicio de sesión sde necesario y proporcionará la contraseña)
  3. Creé un superusuario llamado postgis, luego creé un esquema en la base de datos llamado postgis y ejecuté create extension postgis *esto podría ser una mala práctica para tener otro superusuario en la DB pero no quería que las funciones de postgis estuvieran en el mismo esquema que el SDE
  4. ejecute la herramienta esri "exportar palabras clave de configuración de la base de datos". conexión a la base de datos = la base de datos que acaba de crear
  5. edite el archivo en el bloc de notas, vaya a la línea 27 cambie ST_GEOMETRY por "PG_GEOMETRY", ¡Guardar!
  6. ejecute la herramienta de esri "importar palabras clave de configuración de la base de datos" para esa conexión de base de datos y cualquier capa que traiga ahora debería tener el backend de postgis por defecto con la funcionalidad de sde.

ahora puedo utilizar el impresionante poder de postgis en el backend y cuando creo una tabla todo lo que tengo que hacer es hacer clic derecho en la capa en la conexión db, gestionar y registrar con geodatabase. Debo tener en cuenta que cuando hago clic en registrar con geodatabase a veces el arcmap se apaga y me da la locura hubo un error grave, por favor, envíe informe de error a ESRI....

4voto

M. B. Altaie Puntos 11

La razón por la que estás teniendo tantas dificultades para usar ArcGIS y PostgreSQL juntos es que no lo estás haciendo bien.

Tienes tres problemas básicos, en orden inverso de gravedad:

  1. Estás intentando mezclar la sintaxis de PostGIS con la de SDE.ST_Geometry tipo de datos

Todos los productos de bases de datos tienen un mecanismo para distinguir entre las bibliotecas de funciones, principalmente mediante el uso de esquemas de bases de datos para mantenerlas separadas. Pero como eso puede ser fastidioso ( sabio pero es muy cansado), también proporcionan un mecanismo para especificar una preferencia. Desafortunadamente, los mensajes de error de PostgreSQL en torno a esta característica no dicen "No, no, para usar el sde.ST_Geometry tipo, vicio geometry es necesario anteponer a la función el prefijo ' sde. '"

  1. Está juzgando el estándar de Tipos y Funciones Espaciales con PostGIS

Esri fue una de las primeras organizaciones en disponer de bibliotecas de geometría conformes a los estándares en las bases de datos SQL, empezando por DB2 e Informix (se remontan a la misma época en que se añadió "SQL" a PostgreSQL, y antes de que PG soportara ANSI SQL-92). Estas librerías han sido portadas a todas las bases de datos excepto Microsoft SQL Server (porque no soporta librerías de tipo datablade/extensión/personalización). PostGIS cumple con los estándares, pero tiene muchas más funciones que eso, sobre todo porque querían hacerlo, y PostgreSQL era lo suficientemente abierto como para hacerlo. Esri tiene un conjunto básico de funciones que cumplen con los estándares, y soporte de tipos a través de muchos motores RDBMS, algunos de los cuales tienen límites en el número de funciones que pueden explotar tipos personalizados. Sería bonito si Esri apoyara las funciones adicionales, pero no es en absoluto un requisito para hacer un uso efectivo del tipo. Pero considere esto: La mayoría de extra Las funciones de PostGIS sirven para hacer cosas que Esri lleva haciendo desde hace décadas, y están disponibles dentro de Desktop (haciéndolas disponibles para todas las plataformas RDBMS, por igual).

  1. No está utilizando las capacidades de ArcGIS con PostgreSQL

En su pregunta afirma que quiere utilizar PostGIS y ArcGIS juntos. Bueno, a partir de ArcGIS 10.4.0, se puede, y ni siquiera es necesario habilitar una geodatabase de empresa para hacerlo . Tiene dos opciones: Puede utilizar las capacidades nativas de RDBMS desde el principio, con capas de consulta que acceden a las tablas para su visualización y tablas con geometría de PostGIS creadas a través de SQL o acceso a la base de datos de lectura de ArcGIS, o puede habilitar la geodatabase empresarial, e instruir a ArcGIS para que cree datos de PostGIS por defecto cambiando el GEOMETRY_STORAGE parámetros de la palabra clave a PG_GEOMETRY (de hecho, esa es la sólo en las instancias RDS, ya que Amazon no permite la opción sde.ST_Geometry biblioteca de funciones que se instalará en la base de datos de la caja negra). Así que todo se reduce a lo que usted quiere hacer en este caso. A ArcGIS no le importa la metodología que elijas (excepto que no obtendrás geodatabases multiversionales, ni replicación de geodatabases, ni historial de archivos, etc... sin una geodatabase empresarial). Aparte de algunas peculiaridades con Sort (Data Management) con tablas de origen PostgreSQL, no he encontrado ningún problema en la interacción de PG con ArcGIS 10.4.x.

0voto

Chris Puntos 128

ST_Union espera un tipo de geometría PostGIS.

Dado que lo almacena en un tipo ST_Geometry (formato propietario de ESRI) tendría que utilizar la función ST_Union específica de SDE:

select sde.ST_Aggr_Union(shape) as geom from base_layers.hl_huc

Nota, esto sólo funcionará en Oracle o SQLite SDE

-1voto

Cemre Puntos 153

Parece que cuando me olvido de activar la extensión PostGIS, PostgreSQL no ve las funciones de PostGIS. Intente ejecutar lo siguiente (funciona en PgAdmin 4 - No tengo acceso a ArcSDE) :

CREATE EXTENSION postgis;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X