Esa pregunta suena tan redundante ...
En cualquier caso, me han pedido que explore los usos de SQL en ArcGIS. Utilizamos una base de datos SDE para todo el almacenamiento del lado del servidor y la gestión de bases de datos / edición a gran escala. Sin embargo, estoy intentando profundizar en cuán integrado está SQL en las herramientas de ArcGIS. Hay una nota en la Guía de referencia de consultas SQL de la ayuda de ArcGIS 10 que establece claramente que la sintaxis SQL no funciona cuando se usa la herramienta Calculadora de campo. Esto me parece muy decepcionante, ya que parece muy útil poder extraer y destrozar información directamente de la base de datos al calcular los valores de campo.
¿Cuáles son las mayores limitaciones y dificultades en las que uno podría caer al intentar utilizar SQL en ArcGIS? ¿Qué herramientas ven la mejor funcionalidad cuando se integran con SQL?
Si se requiere un ejemplo para que esta sea una pregunta más clara, estoy tratando de rastrear el número de puntos de interés que son de cierto tipo en una región determinada. Cada punto tiene un atributo que describe su tipo y región. Mi solución actual implica el uso intensivo de cursores para el conteo y la recuperación de datos, pero un superior señaló que una simple consulta SQL podría hacer todo esto y más. Desafortunadamente, parece que la funcionalidad no está presente para esto.
¿O es eso?
Respuestas:
Si desea utilizar Python, eche un vistazo al comando ArcSDESQLExecute . Esto le permitirá ejecutar SQL arbitrario, pero debe estar conectado a través de SDE. Si el resultado de la consulta es un conjunto de filas, los atributos se devolverán como una lista de listas de Python. De lo contrario, devolverá True si el SQL se ejecutó correctamente o Ninguno si no. Ver también: Ejecutar SQL usando una conexión ArcSDE
fuente
Si está escribiendo ArcObjects personalizados, puede ejecutar SQL arbitrario contra un espacio de trabajo SDE utilizando el método ExecuteSQL . Este método está limitado a consultas que no devuelven conjuntos de resultados, como INSERT, UPDATE o algunos procedimientos almacenados.
Si está trabajando a través de la interfaz de usuario de ArcMap, sus opciones son un poco más limitadas. La razón por la que no puede usar SQL a través de Calcular campo es porque la expresión es en realidad VBScript y / o Python. Podría usar VBScript o Python para ejecutar una expresión SQL arbitraria y extraer valores del cursor resultante, pero no lo recomendaría.
Alternativamente, puede usar la respuesta de Regan y crear una capa de consulta. Para datos de solo lectura, este es su mejor enfoque. Si necesita actualizar datos, es un poco más complicado. Deberá crear una capa de consulta con sus "nuevos" valores, realizar una unión con su tabla existente y luego usar los campos de cálculo. Esto podría combinarse con ExecuteSQL para realizar actualizaciones complejas y luego ver los resultados (algo torpe).
Su última alternativa es ejecutar SQL contra tablas de ArcSDE directamente.
fuente
Debería consultar Capas de consulta en ArcMap 10
fuente
Dependiendo de qué RDBMS esté utilizando, puede aprovechar las bibliotecas SQL fuera de ArcObjects o arcpy, siempre y cuando no dependa de recuperar los datos de entidades. Muchas de las consultas en la base de datos de SQL Server que uso a diario no son de naturaleza espacial, por lo que usaré las clases System.Data dentro de .NET o la biblioteca pymssql Python dentro de las aplicaciones Python. Si requiere el uso de datos espaciales, entonces las capas de consulta son su mejor opción. La única advertencia con Capas de consulta es que solo funcionan con datos almacenados utilizando tipos de datos espaciales (no el tipo SDEBINARY estándar).
fuente