Iedereen houdt van SQLite. Het is een enkel draagbaar bestand, presteert goed en schaalt goed, ondersteunt genoeg SQL om nuttig te zijn en heeft een DB-API<\/A> compatibele Python-module en API-toegang in andere talen. Het is ingebed in veel mobiele en desktop-apps, en is direct bruikbaar in ArcGIS Pro.<\/P><\/P>SQLite als container heeft een incarnatie - OGC GeoPackage - die de codering van vector- en rasterfeatures ondersteunt voor direct gebruik in ArcGIS Pro. Je kunt over de standaard lezen op de OGC website<\/A>.<\/P><\/P>Het GIS-formaat dat het vaakst wordt vergeleken met GeoPackage is het door Esri gedefinieerde shapefile. Shapefile is het meest gedeelde GIS-formaat op de planeet en de codering van vectorfeatures is gepubliceerd<\/A>. Let echter op de publicatiedatum - 1998. Ten tijde van het ontwerp van het shapefile waren de beschikbare componenten beperkt, wat frustrerend kan zijn voor de geavanceerde workflows van vandaag. Deze omvatten bestandsgrootte limiet, aantal attributenvelden en naamlengte limieten, datums die geen tijd ondersteunen, complexiteit bij het omgaan met tekenencoderingen en gebrek aan ondersteuning voor null-waarden voor de meeste veldtypen. Shapefile is spectaculair succesvol geweest voor het verwerken van eenvoudige vectorfeatures, maar het kan beperkend zijn.<\/P><\/P>Ik zie GeoPackage als het nieuwe shapefile zonder de oude beperkingen en ik moedig je aan het te gebruiken. Het is een geweldig formaat voor, nou ja, geo-packaging! Ga echter niet zo ver te denken dat het een volwaardige GIS-werkruimte is, het heeft geen geodatabase-gedragingen zoals domeinen en attribuutregels. Wat het doet, doet het goed.<\/P><\/P>GeoPackage is uitbreidbaar, en er zijn goedgekeurde OGC-extensies voor gerasterde tegels van hoogtegegevens en tabelrelaties, en niet-goedgekeurde community-extensies zoals kaartstyling van features en opslag van vector tiles. ArcGIS Pro implementeert nog geen ondersteuning voor GeoPackage-extensies (behalve tabelfunctionaliteit<\/A> die is aangenomen in de v1.2 release).<\/P><\/P><\/P>Wat kun je doen met een GeoPackage in ArcGIS Pro 2.6? <\/P><\/P>Lees en schrijf eenvoudige features (polygonen, polylijnen, punten, multipunten, cirkelbogen, tabellen)<\/LI>Maak feature classes met de Feature Class to Feature Class tool<\/LI>Maak tabellen met de Table to Table tool<\/LI>Gebruik Kopiëren/Plakken in het Catalogusvenster<\/LI>Gebruik de Append-tool om gegevens toe te voegen aan een bestaande feature class of tabel<\/LI>Gebruik de Add Raster To Geopackage tool om afbeeldingen op te slaan<\/LI>Bewerk features of rijen met de mogelijkheid om bewerkingen ongedaan te maken en opnieuw uit te voeren<\/P><\/LI>Wijzig het schema<\/LI>Voer geoprocessing uit met elke tool die een eenvoudige feature class of tabel als invoer accepteert<\/LI>Deel GeoPackage-gegevens met andere gebruikers als een statisch item in ArcGIS Online<\/LI>Gebruik GeoPackage vector- en rastergegevens in kaartworkflows<\/LI>Lees of schrijf GeoPackage in Data Interoperability ETL-workflows<\/LI>Gebruik SQL-instructies in SQLite's native dialect<\/LI><\/UL><\/P>Wat kun je niet<\/EM> <\/?STRONG>doen met een GeoPackage in ArcGIS Pro 2.6? <\/P><\/P>Publiceer een GeoPackage-item als een gehoste weblaag<\/LI>Sla metadata op of bewerk deze<\/LI>Gebruik geoprocessingtools die geodatabase-uitvoer vereisen<\/LI><\/UL><\/P>Enkele aanbevelingen: Je kunt velden toevoegen en waarden berekenen met geoprocessingtools of ArcPy, maar je zult merken dat dit langzamer kan zijn dan native geodatabasebewerkingen. Geometrieopslag in een GeoPackage is niet gecomprimeerd zoals in een geodatabase, dus ze kunnen groot worden. Doe je geoprocessing vooraf<\/?EM> voordat je je GeoPackage maakt, kopieer dan daarna je gegevens erin. Zie GeoPackage als een deelformaat.<\/P><\/P>Zet je gegevens zo over naar de GeoPackage:<\/P><\/P>Maak een GeoPackage met de Create SQLite Database <\/?STRONG>-tool (met gebruik van het GeoPackage ruimtelijke type)<\/LI>Gebruik de Kopieer<\/?STRONG>-tool (Data Management, General toolset) om vectordata toe te voegen, of Kopiëren/Plakken<\/?STRONG> in het Catalogusvenster<\/LI>Gebruik de Add Raster to GeoPackage<\/?STRONG>-tool (Conversie, To GeoPackage toolset) om rastermozaïeken toe te voegen<\/LI><\/?UL><\/?P>Je GeoPackage is nu klaar voor gebruik.<\/?P><\/?BODY>
<\/P>
SQLite als container heeft een incarnatie - OGC GeoPackage - die de codering van vector- en rasterfeatures ondersteunt voor direct gebruik in ArcGIS Pro. Je kunt over de standaard lezen op
Het GIS-formaat dat het vaakst wordt vergeleken met GeoPackage is het door Esri gedefinieerde shapefile. Shapefile is het meest gedeelde GIS-formaat op de planeet en de codering van vectorfeatures is
Ik zie GeoPackage als het nieuwe shapefile zonder de oude beperkingen en ik moedig je aan het te gebruiken. Het is een geweldig formaat voor, nou ja, geo-packaging! Ga echter niet zo ver te denken dat het een volwaardige GIS-werkruimte is, het heeft geen geodatabase-gedragingen zoals domeinen en attribuutregels. Wat het doet, doet het goed.<\/P>
GeoPackage is uitbreidbaar, en er zijn goedgekeurde OGC-extensies voor gerasterde tegels van hoogtegegevens en tabelrelaties, en niet-goedgekeurde community-extensies zoals kaartstyling van features en opslag van vector tiles. ArcGIS Pro implementeert nog geen ondersteuning voor GeoPackage-extensies (behalve
Wat kun je doen met een GeoPackage in ArcGIS Pro 2.6? <\/P>
Bewerk features of rijen met de mogelijkheid om bewerkingen ongedaan te maken en opnieuw uit te voeren<\/P><\/LI>
Wat kun je niet<\/EM> <\/?STRONG>doen met een GeoPackage in ArcGIS Pro 2.6? <\/P><\/P>Publiceer een GeoPackage-item als een gehoste weblaag<\/LI>Sla metadata op of bewerk deze<\/LI>Gebruik geoprocessingtools die geodatabase-uitvoer vereisen<\/LI><\/UL><\/P>Enkele aanbevelingen: Je kunt velden toevoegen en waarden berekenen met geoprocessingtools of ArcPy, maar je zult merken dat dit langzamer kan zijn dan native geodatabasebewerkingen. Geometrieopslag in een GeoPackage is niet gecomprimeerd zoals in een geodatabase, dus ze kunnen groot worden. Doe je geoprocessing vooraf<\/?EM> voordat je je GeoPackage maakt, kopieer dan daarna je gegevens erin. Zie GeoPackage als een deelformaat.<\/P><\/P>Zet je gegevens zo over naar de GeoPackage:<\/P><\/P>Maak een GeoPackage met de Create SQLite Database <\/?STRONG>-tool (met gebruik van het GeoPackage ruimtelijke type)<\/LI>Gebruik de Kopieer<\/?STRONG>-tool (Data Management, General toolset) om vectordata toe te voegen, of Kopiëren/Plakken<\/?STRONG> in het Catalogusvenster<\/LI>Gebruik de Add Raster to GeoPackage<\/?STRONG>-tool (Conversie, To GeoPackage toolset) om rastermozaïeken toe te voegen<\/LI><\/?UL><\/?P>Je GeoPackage is nu klaar voor gebruik.<\/?P><\/?BODY>
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.
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.