7 votos

La Consulta De Esri Geodatabase De Archivos?

¿Cuál es la mejor manera de mirar y de consulta de datos (por ejemplo, grupo a) en una geodatabase de archivos?

Estoy pensando en algo similar a la apertura de una Geodatabase Personal en el Acceso, la creación de consultas, la adición de columnas, etc.

Los datos que estoy trabajando es demasiado grande y demasiado lento para consulta en Geodatabases Personales, pero todavía quiero ser capaz de ver los datos fuera de ArcGIS y que las actualizaciones se transmiten hacia los SIG cuando trabajo con él allí.

Estoy mejor de la migración de los datos a una base de datos correcto?

Yo prefiero no tener que hacer esto.

11voto

Alex Tereshenkov Puntos 13433

Geodatabase Personal son grandes, ya que se puede acceder fuera de ArcGIS. Pero son lentas y, en la práctica, el rendimiento comienza a degradarse después de ellos tienen más de 400-500 MB de tamaño. Si usted puede - hacer migrar a las geodatabases de archivos.

Hay muchas maneras que usted puede consultar sus datos utilizando SQL sintaxis:

  1. Seleccionar Por Atributos de la herramienta de geoprocesamiento o un comando de menú le permiten ejecutar SQL where cláusula.

  2. Puede utilizar la ventana de Python en ArcMap para ejecutar el código de Python. Por ejemplo, arcpy.da.SearchCursor proporciona una rica interfaz de ejecución de consultas SQL a la vez limitar el conjunto de registros. Busque el sql_clause argumento en este enlace de ayuda. Prefijo SQL soporta Ninguno, DISTINTO y SUPERIOR. SQL postfix soporta Ninguno, ORDER BY y GROUP BY.

Algunos ejemplos de las consultas SQL:

  • Select distinct sub regiones para todos los estados de la tabla

El código:

import arcpy
states = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb\USA\states'
sql = ('DISTINCT', None)
with arcpy.da.SearchCursor(states,"SUB_REGION",sql_clause=sql) as cur:
    for row in cur:
        print row[0]

#E N Cen
#S Atl
#Mid Atl
#Mtn
#E S Cen
#N Eng
#W S Cen
#W N Cen
#Pacific
  • Grupo de condados del estado y fips código

El código:

import arcpy
counties = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb\USA\counties'
sql = (None, 'GROUP BY STATE_NAME, STATE_FIPS')
with arcpy.da.SearchCursor(counties,["STATE_NAME","STATE_FIPS"],sql_clause=sql) as cur:
    for row in cur:
        print row[0],row[1]
#Minnesota 27
#Washington 53
#Idaho 16
#Montana 30
#North Dakota 38
#Maine 23
#Wisconsin 55  
  1. pandas Paquete de Python proporciona una rica interfaz para el análisis de datos. Este es pre-instalado con ArcGIS 10.4 y puede ser instalado fácilmente para pre-10.4 versiones de ArcGIS. Hay grandes muestras de aquí que traducir las consultas SQL en pandas sintaxis.

    • Crear un marco de datos de una clase de entidad

El código:

states = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb\USA\states'
fields = ['AREA','STATE_NAME','SUB_REGION']
df = pd.DataFrame.from_records([f for f in arcpy.da.SearchCursor(states,fields,"SUB_REGION = 'Pacific'")])
df.columns = fields
print df

    AREA  STATE_NAME SUB_REGION
0   6381      Hawaii    Pacific
1  67290  Washington    Pacific
2  97074      Oregon    Pacific
3 157776  California    Pacific
4 576594      Alaska    Pacific

Ejecuta SQL ORDEN:

df.sort_values('AREA',ascending=False)
         AREA  STATE_NAME SUB_REGION
4  576594.104      Alaska    Pacific
3  157776.310  California    Pacific
2   97073.594      Oregon    Pacific
1   67290.061  Washington    Pacific
0    6380.614      Hawaii    Pacific

Ejecuta SQL SUPERIOR:

df.nlargest(3,'AREA')
         AREA  STATE_NAME SUB_REGION
4  576594.104      Alaska    Pacific
3  157776.310  California    Pacific
2   97073.594      Oregon    Pacific

En última instancia, usted podría considerar la posibilidad de guardar una copia de sus datos en otros DBMS (como SQL Server Express, PostGIS, SQLite) para ser capaz de tomar ventaja de SQL de la consulta. Puede ejecutar consultas SQL de arcpy a DBMS con cualquier decente paquete de Python como pymssql, SQLAlchemyo psycopg2. Python también ha sqlite3 módulo para trabajar con bases de datos SQLite (usted puede copiar los datos en el archivo de base de datos y ejecutar algunas consultas).

2voto

Hameno Puntos 129

Yo recomendaría quedarse con .gdb desde que suena como sólo los usuarios de ArcGIS desktop se consultan los datos. Aquí están algunos conceptos generales para ayudar a mejorar la consulta:

  • Para consulta de datos, la primera recomendación de uso de arcpy da cursores (solo quedará en ciertos campos mientras se consulta, esto debería hacer consultando las tablas con muchos campos más eficiente) si con lógica condicional para la evaluación de los valores que usted está buscando. Usted también puede usar seleccionar capa por atributo arcpy método
  • Aplicar espaciales y de atributos de índices para mejorar la consulta de
  • El uso de filtro de expresión en los cursores para consulta subconjuntos dentro de los subconjuntos de datos

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