5 votos

Actualizaciones de ArcSDE a través de un trigger de Oracle

¿Es posible y/o factible que un trigger de Oracle actualice periódicamente ArcSDE a través de un servicio de geoprocesamiento REST?

¿Alguien tiene experiencia con algo así?

La razón de esto es que tengo una base de datos Oracle que está separada de la base de datos SDE, y hay un número de reglas de negocio que queremos ejecutar primero, antes de insertar la geometría en SDE.

Así que el flujo de trabajo básico sería:
1. Características puntuales mediante ArcGIS Server a través de ArcSDE cargadas en el mapa web
2. El usuario mueve el punto o edita los atributos
3. Las modificaciones de los puntos se escriben primero en Oracle y, a continuación, a través de un disparador, en ArcSDE

3voto

Stefan Schweizer Puntos 151

La base de datos Oracle puede acceder a servicios basados en la web (incluido REST) a través de Paquete UTL_HTTP .
Usted formula y configura la solicitud, la envía y recibe y procesa la respuesta.

No tengo ninguna experiencia con el paquete, pero su flujo de trabajo parece ser factible.

Actualización
El código podría ser así:

DECLARE
  req   utl_http.req;
  resp  utl_http.resp;
  name  VARCHAR2(256);
  value VARCHAR2(1024);
BEGIN

  utl_http.set_proxy('proxy.my-company.com', 'corp.my-company.com');    

  req := utl_http.begin_request('http://www.my-company.com/rest/process');
  utl_http.set_header(req, 'User-Agent', 'Mozilla/4.0');
  resp := utl_http.get_response(req);
  LOOP
    utl_http.read_line(resp, value, TRUE);
    dbms_output.put_line(value);
  END LOOP;
  utl_http.end_response(resp);
EXCEPTION
  WHEN utl_http.end_of_body THEN
    utl_http.end_response(resp);
END;

Sólo tienes que envolver esto en tu gatillo.

2voto

Luís Oliveira Puntos 2139

¿Ha pensado en utilizar Servicios de características de ArcGIS ?

0voto

Pokot0 Puntos 145

¿En qué plataforma de base de datos está alojada la base de datos ArcSDE?

Utilizando Oracle y SDO_GEOMETRY como tipo de datos, esto podría funcionar con el flujo de trabajo que se muestra a continuación, pero es necesario que usted mismo se encargue de la gestión de la capa en lugar de dejar que ArcSDE lo haga por usted, de lo contrario ArcSDE se confundirá con las actualizaciones directas de la tabla de negocios.

Como sugiere @ujjwalesri puede que te resulte más fácil utilizar un Servicio de Características para editar las características directamente, o investigar el uso de Vistas espaciales si es posible en su arquitectura.

Requisitos previos

  • Se utiliza un tipo de datos SQL para almacenar las geometrías en la capa, por ejemplo SDO_GEOMETRY o ST_GEOMETRY. SDEBINARY será difícil de trabajar, ya que la geometría no se almacena en la tabla de negocios para su capa, por lo que no es fácil de actualizar con un disparador.
  • ArcSDE Layer se registra con USER manteniendo la columna OBJECTID (ver http://help.arcgis.com/en/geodatabase/10.0/admin_cmds/support_files/datamgmt/sdelayer.htm ), o
  • La capa está disponible a través de ArcGIS como capa de consulta.

Actualizar el flujo de trabajo

  1. Actualización de datos en la base de datos Oracle, dispara el trigger para actualizar la geometría
  2. Activar actualizaciones/inserciones y eliminaciones en la tabla de negocios para la capa en la base de datos SDE remota
  3. ArcSDE ve los registros actualizados en la capa

Si desea realizar este tipo de actualizaciones directas a las capas desde la base de datos, entonces sólo está utilizando ArcSDE como una interfaz de visualización para ver los datos espaciales que se encuentran en las tablas de la base de datos. Una vez que se empieza a actualizar la información espacial directamente desde la base de datos, ya no es trivial editarla utilizando la pila de versionado y edición de ArcGIS/ArcSDE.

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