A todos les gusta SQLite. Es un archivo portátil único, funciona bien y escala adecuadamente, soporta suficiente SQL para ser útil y tiene un módulo Python compatible con DB-API<\/A> y acceso API en otros lenguajes. Está integrado en muchas aplicaciones móviles y de escritorio, y es directamente utilizable en ArcGIS Pro.<\/P><\/P>SQLite como contenedor tiene una encarnación - OGC GeoPackage - que soporta la codificación de características vectoriales y ráster para uso directo en ArcGIS Pro. Puedes leer sobre el estándar en el sitio web de OGC<\/A>.<\/P><\/P>El formato GIS más frecuentemente comparado con GeoPackage es el shapefile definido por Esri. Shapefile es el formato GIS más compartido en el planeta y su codificación de características vectoriales está publicada<\/A>. Sin embargo, nota la fecha de publicación - 1998. En ese momento, los componentes disponibles tenían limitaciones que pueden frustrar los flujos de trabajo avanzados actuales. Estas incluyen límite de tamaño de archivo, cantidad de campos de atributos y ancho del nombre, fechas que no soportan tiempo, complejidad en el manejo de codificaciones de caracteres y falta de soporte para valores nulos en la mayoría de tipos de campo. Shapefile ha sido espectacularmente exitoso para manejar características vectoriales simples, pero puede ser limitante.<\/P><\/P>Pienso en GeoPackage como el nuevo shapefile sin las viejas limitaciones y te animo a usarlo. Es un gran formato para, bueno, ¡geo-empaquetar! Sin embargo, no llegues a pensar que es un espacio de trabajo GIS completo, no tiene comportamientos de geodatabase como dominios y reglas de atributos. Lo que hace, lo hace bien.<\/P><\/P>GeoPackage es extensible, y hay extensiones aprobadas por OGC para mosaicos cuadriculados de datos de elevación y relaciones tabulares, y extensiones comunitarias no aprobadas como el estilo de mapas para características y almacenamiento de mosaicos vectoriales. ArcGIS Pro aún no implementa soporte para ninguna extensión GeoPackage (excepto la funcionalidad tabular<\/A> adoptada en la versión 1.2).<\/P><\/P><\/P>¿Qué puedes hacer con un GeoPackage en ArcGIS Pro 2.6?<\/P><\/P>Leer y escribir características simples (polígonos, polilíneas, puntos, multipuntos, arcos circulares, tablas)<\/LI>Crear clases de entidad con la herramienta Feature Class to Feature Class<\/LI>Crear tablas con la herramienta Table to Table<\/LI>Usar Copiar/Pegar en el panel Catálogo<\/LI>Usar la herramienta Append para agregar datos a una clase de entidad o tabla existente<\/LI>Usar la herramienta Add Raster To Geopackage para almacenar imágenes<\/LI>Editar características o filas con la capacidad de deshacer y rehacer ediciones<\/P><\/LI>Modificar el esquema<\/LI>Realizar geoprocesamiento con cualquier herramienta que tome una clase de entidad simple o tabla como entrada<\/LI>Compartir datos GeoPackage con otros usuarios como un elemento estático en ArcGIS Online<\/LI>Usar datos vectoriales y ráster GeoPackage en flujos de trabajo cartográficos<\/LI>Leer o escribir GeoPackage en flujos ETL de Data Interoperability<\/LI>Usar sentencias SQL en el dialecto nativo de SQLite<\/LI><\/UL><\/P>¿Qué no<\/EM> <\/?STRONG>puedes hacer con un GeoPackage en ArcGIS Pro 2.6?<\/P><\/P>Publicar un elemento GeoPackage como una capa web alojada<\/LI>Almacenar o editar metadatos<\/LI>Usar cualquier herramienta de geoprocesamiento que requiera salida geodatabase<\/LI><\/UL><\/P>Algunas recomendaciones: Puedes agregar campos y calcular valores con herramientas de geoprocesamiento o ArcPy, pero puede ser más lento que las operaciones nativas de geodatabase. El almacenamiento geométrico en un GeoPackage no está comprimido como una geodatabase, por lo que pueden crecer mucho. Realiza tu geoprocesamiento antes<\/EM> de crear tu GeoPackage, luego copia tus datos dentro. Piensa en GeoPackage como un formato para compartir.<\/P><\/P>Mueve tus datos al GeoPackage así:<\/P><\/P>Crea un GeoPackage con la herramienta Create SQLite Database <\/?STRONG>(usando el tipo espacial GeoPackage)<\/LI>Usa la herramienta Copy<\/?STRONG> (Data Management, conjunto General) para agregar datos vectoriales, o Copiar/Pegar<\/?STRONG> en el panel Catálogo<\/LI>Usa la herramienta Add Raster to GeoPackage<\/?STRONG> (Conversión, conjunto To GeoPackage) para agregar mosaicos ráster<\/LI><\/?UL><\/?P>Tu GeoPackage ya está listo para usarse.<\/?P><\/?P>Nota sobre compartir:<\/?STRONG> Puedes subir un archivo .gpkg a ArcGIS Online, se reconocerá el tipo de archivo. Puedes enviar un enlace después de compartir el elemento y otros podrán descargarlo desde la galería de contenido.<\/?P><\/?P>Tema avanzado:<\/?STRONG> Debido a que está basado en SQLite, GeoPackage viene con un motor de base de datos y buen soporte del lenguaje SQL<\/?A>. Hay herramientas externas para trabajar con SQLite que pueden ser útiles, pero para incluir un componente espacial en tu trabajo los productos ArcGIS Data Interoperability o Safe Software FME soportan scripting SELECT, CREATE, DROP, DUPLICATE, TRUNCATE y CROSS JOIN dentro de transformadores Spatial ETL como SQLCreator y SQLExecutor. Este enfoque permite un uso muy potente y eficiente del GeoPackage.<\/?P><\/?BODY>
<\/P>
SQLite como contenedor tiene una encarnación - OGC GeoPackage - que soporta la codificación de características vectoriales y ráster para uso directo en ArcGIS Pro. Puedes leer sobre el estándar en
El formato GIS más frecuentemente comparado con GeoPackage es el shapefile definido por Esri. Shapefile es el formato GIS más compartido en el planeta y su codificación de características vectoriales está
Pienso en GeoPackage como el nuevo shapefile sin las viejas limitaciones y te animo a usarlo. Es un gran formato para, bueno, ¡geo-empaquetar! Sin embargo, no llegues a pensar que es un espacio de trabajo GIS completo, no tiene comportamientos de geodatabase como dominios y reglas de atributos. Lo que hace, lo hace bien.<\/P>
GeoPackage es extensible, y hay extensiones aprobadas por OGC para mosaicos cuadriculados de datos de elevación y relaciones tabulares, y extensiones comunitarias no aprobadas como el estilo de mapas para características y almacenamiento de mosaicos vectoriales. ArcGIS Pro aún no implementa soporte para ninguna extensión GeoPackage (excepto la
¿Qué puedes hacer con un GeoPackage en ArcGIS Pro 2.6?<\/P>
Editar características o filas con la capacidad de deshacer y rehacer ediciones<\/P><\/LI>
¿Qué no<\/EM> <\/?STRONG>puedes hacer con un GeoPackage en ArcGIS Pro 2.6?<\/P><\/P>Publicar un elemento GeoPackage como una capa web alojada<\/LI>Almacenar o editar metadatos<\/LI>Usar cualquier herramienta de geoprocesamiento que requiera salida geodatabase<\/LI><\/UL><\/P>Algunas recomendaciones: Puedes agregar campos y calcular valores con herramientas de geoprocesamiento o ArcPy, pero puede ser más lento que las operaciones nativas de geodatabase. El almacenamiento geométrico en un GeoPackage no está comprimido como una geodatabase, por lo que pueden crecer mucho. Realiza tu geoprocesamiento antes<\/EM> de crear tu GeoPackage, luego copia tus datos dentro. Piensa en GeoPackage como un formato para compartir.<\/P><\/P>Mueve tus datos al GeoPackage así:<\/P><\/P>Crea un GeoPackage con la herramienta Create SQLite Database <\/?STRONG>(usando el tipo espacial GeoPackage)<\/LI>Usa la herramienta Copy<\/?STRONG> (Data Management, conjunto General) para agregar datos vectoriales, o Copiar/Pegar<\/?STRONG> en el panel Catálogo<\/LI>Usa la herramienta Add Raster to GeoPackage<\/?STRONG> (Conversión, conjunto To GeoPackage) para agregar mosaicos ráster<\/LI><\/?UL><\/?P>Tu GeoPackage ya está listo para usarse.<\/?P><\/?P>Nota sobre compartir:<\/?STRONG> Puedes subir un archivo .gpkg a ArcGIS Online, se reconocerá el tipo de archivo. Puedes enviar un enlace después de compartir el elemento y otros podrán descargarlo desde la galería de contenido.<\/?P><\/?P>Tema avanzado:<\/?STRONG> Debido a que está basado en SQLite, GeoPackage viene con un motor de base de datos y buen soporte del lenguaje
I have a solution where the field is redefined in the geopackage before uploading. A second version allows for non UTC datetime.
import pandas as pd def normalise_date_fields(gdf, use_utc: bool = True, local_tz=None, verbose: bool = True): """ Convert epoch-based date fields to timezone-aware datetimes. Targets columns with 'date' or 'time' in the name. Parameters ---------- gdf : GeoDataFrame Input GeoDataFrame. use_utc : bool, default True If True, output datetimes are in UTC (tz-aware, +00:00). If False, output datetimes are converted to local timezone (tz-aware with offset). local_tz : str | tzinfo | None Timezone to use when use_utc=False. - None => use the machine's local timezone. - str => e.g. "Pacific/Auckland" verbose : bool Print conversion messages. Returns ------- GeoDataFrame GeoDataFrame with converted datetime columns where applicable. """ # Resolve local timezone (only used when use_utc=False) if not use_utc: if local_tz is None: # Use the runtime environment's local timezone local_tz = pd.Timestamp.now().tz_localize("UTC").tz_convert(None).tzinfo # Note: tz_convert(None) returns naive; tzinfo can still be recovered in many envs, # but if your environment behaves oddly, pass local_tz="Pacific/Auckland". elif isinstance(local_tz, str): # Pandas can use IANA tz database strings local_tz = local_tz # else assume tzinfo-like object is passed through for col in gdf.columns: col_lc = col.lower() if "date" in col_lc or "time" in col_lc: series = gdf[col] # Only attempt conversion on numeric columns if pd.api.types.is_numeric_dtype(series): max_val = series.dropna().max() # Heuristic: epoch milliseconds are usually > 1e12 if pd.notna(max_val) and max_val > 1e12: try: # Step 1: interpret epoch(ms) as UTC dt_utc = pd.to_datetime(series, unit="ms", utc=True, errors="coerce") # Step 2: optionally convert to local timezone (keeping offset) if use_utc: gdf[col] = dt_utc if verbose: print(f" ✓ Converted epoch(ms) → datetime (UTC): {col}") else: gdf[col] = dt_utc.dt.tz_convert(local_tz) if verbose: print(f" ✓ Converted epoch(ms) → datetime (local offset): {col} ({local_tz})") except Exception as e: if verbose: print(f" ⚠ Failed to convert {col}: {e}") return gdf # -------- main ----------- # other processing... gdf = gpd.GeoDataFrame.from_features(features) gdf = gdf.set_crs("EPSG:4326") gdf = normalise_date_fields(gdf) gdf.to_file(GPKG_PATH, layer=layer, driver="GPKG") print(f" Saved: {layer} ({len(gdf)} features)")
@ChrisLeSueur Question for you above.
I am having trouble with date fields in a geopackage. The best format is an ISO string because it can include the timezone. But it can be an epoch number. Sqlite handles all dates as functions, not a data type. This means that AGOL cannot read a date in a geopackage. How does Survey123 handle dates in a geopackage?
The GIS format most often compared with GeoPackage is the Esri-defined shapefile.
I have not seen GeoPackage compared to a shapefile. GeoPackage is more of an up-and-coming competitor to the File Geodatabase. While GeoPackage is still somewhat immature as a standard (in terms of implementation... QGIS being further along in its implementation), some of the limitations are ArcGIS Pro limitations (editing) while others are inherent to the leaner core spec (domains and subtypes).
However, don't go as far as thinking it is a full-blown GIS workspace
Not to be pedantic! but..
<SPAN class="keyword token">import</SPAN> arcpy gpkg <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Data\db.gpkg"</SPAN> desc <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Describe<SPAN class="punctuation token">(</SPAN>gpkg<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> hasattr<SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'dataType'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>desc<SPAN class="punctuation token">.</SPAN>dataType<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">>></SPAN>Workspace<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Think of GeoPackage as a sharing format
Eh, not really unless a geospatial professional never, ever, ever leaves the Esri reservation for anything, ever (which is not good for anyone). It should be pointed out that GeoPackage offers some very important efficiencies over the File Geodatabase. For example GeoPackage supports views, which means that you can quickly return results through SQL statements without having to create new data. i.e. you can do this
buffer<SPAN class="punctuation token">(</SPAN>geom<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1000</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> geom<SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
instead of having to run a Buffer tool and place an output somewhere. Used properly, this can eclipse the expand issue brought up in the article and offer a considerable performance advantage over the legacy FGDB container.
That said, I use both formats for processing and it all depends on the use case. Generally if I need to process a big table of data and I know I can achieve the result through SQL, I will do it in GPKG. If I need to daisy chain together a set of ArcGIS tools to get a result, I'll go with File Geodatabase and do as much intermediate processing as possible in memory.
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate para una cuenta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.