5 votos

Servicio de características de PostgreSQL/PostGIS en ArcGIS Server 10.2

Usando 10.2 ArcMap/ArcGIS Server en Windows he publicado con éxito algunos servicios de mapas desde mis datos de PostgreSQL/PostGIS y ahora quiero permitir la edición de las características a través de una aplicación web de JavaScript. Esto NO es a través de tablas SDE (es decir, creando una geodatabase). Sí, estoy usando PostgreSQL 9.3.1 y PostGIS 2.1... pero todo lo demás parece funcionar bien, pero este error PK. ¿Cómo consigo que ArcGIS Server confíe en que la PK incremental que he creado está bien?

"00166: El ObjectID de la capa no está actualizado por la base de datos y el servicio de características se está publicando con la capacidad de Crear activada"

Así que, siguiendo los ejemplos de la API JS, estoy habilitando tanto el servicio de geometría como el servicio de acceso a características con todas las operaciones y capacidades habilitadas.

Empecé a utilizar el tipo de datos serie para la clave primaria OBJECTID, que parece ser un atajo para crear una clave entera y autoincrementable, como se indica a continuación:

CREATE TABLE test_schema.volmonwgs84e
(
  objectid serial NOT NULL,
  volmon24_i integer,
  site_id integer,
  waterbody character varying(30),
  geom geometry(MultiPoint,4326),
  CONSTRAINT volmonwgs84e_pkey PRIMARY KEY (objectid)
)
WITH (
      OIDS=FALSE
);
ALTER TABLE test_schema.volmonwgs84e
  OWNER TO postgres;

CREATE INDEX volmonwgs84e_geom_gist
  ON test_schema.volmonwgs84e
  USING gist
  (geom);

Sin embargo, cuando voy a publicar el servicio (desde ArcMap) el analizador muestra el error anterior.

Al hacer clic con el botón derecho del ratón en el error, me ofrece amablemente "Añadir un ID autoincrementable", a lo que luego responde con lo siguiente. A saber, ya tengo un campo autoincrementable de todos modos.

"Executing: AddIncrementingIDField testing.test_schema.volmonwgs84e BOO
Start Time: Tue Dec 10 15:55:06 2013
ERROR 000152: You cannot add an incrementing ID field to a table registered with the geodatabase.
Failed to execute (AddIncrementingIDField).
Failed at Tue Dec 10 15:55:07 2013 (Elapsed Time: 0.70 seconds)[/CODE]

Entonces, ¿qué tipo de datos y reglas debe tener este campo autoincrementable, y qué intenta hacer AddIncrementingIDField por mí?

ACTUALIZACIÓN:

Pensando que mi problema era el "nuevo" enfoque de PostGIS/PostgreSQL he intentado también crear una tabla con estos enfoques más antiguos de la siguiente manera:

  1. establecer manualmente la secuencia en la columna PK entera en lugar de utilizar el tipo SERIAL,
  2. utilizando "SELECT AddGeometryColumn" para crear la columna de geometría, y en ella utilizando el viejo enfoque de las restricciones con el argumento final = false ( http://postgis.net/docs/AddGeometryColumn.html )
CREATE SEQUENCE test_schema.mypoint_const_b_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
 START 1
CACHE 1;
 ALTER TABLE test_schema.mypoint_const_b_seq
 OWNER TO postgres;

CREATE TABLE test_schema.mypoint_const_b
(
  objectid integer NOT NULL DEFAULT nextval('test_schema.mypoint_const_b_seq'::regclass),
  volmon24_i integer,
  site_id integer,
  waterbody character varying(30),
  CONSTRAINT mypoint_const_b_pkey PRIMARY KEY (objectid)
)
WITH (
  OIDS=FALSE
);

SELECT AddGeometryColumn ('test_schema','mypoint_const_b','geom',4326,'MULTIPOINT',2,     false);

ALTER TABLE test_schema.mypoint_const_b
  OWNER TO postgres;

CREATE INDEX mypoint_const_b_geom_gist
  ON test_schema.mypoint_const_b
  USING gist
  (geom);

Pero sigo obteniendo un error fatal al intentar crear un servicio con la capacidad de "Crear" de Feature Access habilitada con el mismo mensaje: [CODE]"00166: El ObjectID de la capa no está actualizado por la base de datos y el servicio de características se está publicando con la capacidad Create habilitada" [/CODE]

Sé que la base de datos es el mantenimiento de la PK porque puedo añadir características utilizando QGIS sin problemas. Y, las propiedades de ArcMap para los índices en la capa muestra objectid es un índice único.

PS, enterrado en este excelente enlace ( http://proceedings.esri.com/library/userconf/proc13/tech-workshops/tw_192.pdf ) Veo que a Arc no le gustan los campos con comillas (que es como se fuerza la mayúscula en OBJECTID. Objetid en minúsculas aparece a ArcMap, pero quizás no a ArcServer.

1voto

Max Ruf Puntos 162

Es necesario haber registrado previamente la tabla PostGIS con la Geodatabase en ArcCatalog.

Right-click menu in Catalog Tree

Imagen del menú del botón derecho del árbol del catálogo en la tabla.

Asegúrese de que, cuando llegue a la pestaña "Campos" durante el registro, tenga su campo "objectid" reconocido como de tipo "Object ID", como el campo GID en la siguiente imagen.

Fields tab shown in registration process

A continuación, no debe utilizar una secuencia propia para rellenar los valores de objectid. Debe utilizar un activador ON INSERT que llame a una función de base de datos SDE denominada "sde.next_rowid". Consulte estos artículos de la ayuda de ArcGIS ArcGIS Help - Edición de datos de la geodatabase mediante SQL .

Tal vez debería obtener alguna información de fondo adicional, como la que puede obtener en las presentaciones de ESRI (como esto para ArcGIS 9.3 )

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