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:
Seleccionar Por Atributos de la herramienta de geoprocesamiento o un comando de menú le permiten ejecutar SQL where
cláusula.
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
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
, SQLAlchemy
o 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).