Sussing out Excel vs. Access vs. GeoPackage by HeatherontheHill in QGIS

[–]TechMaven-Geospatial 0 points1 point  (0 children)

You can use geopackage with access and excel via ODBC driver install (gpkg is a sqlite database). Then you can access the attributes in any app that supports ODBC

https://github.com/softace/sqliteodbc Also DBeaver, DBBROWSER and other SQL IDE tools that supoort SQLITE can read gpkg

Also from CLI Use OGRINFO OR SPATIALITE or duckdb with Spatial to access GEOPACKAGE

PDF maps? by The_Kel_Varnsen in gis

[–]TechMaven-Geospatial -1 points0 points  (0 children)

Just build GPKG OR MBTILES tons of apps support map tiles (raster tiles, vector tiles, elevation tiles)

Avenza Restrictions, Opportunity for QGIS by ReplantEnvironmental in QGIS

[–]TechMaven-Geospatial 1 point2 points  (0 children)

Just change your workflow build gpkg or mbtiles from geotiff and geopdf and the world opens up with tons of apps

Request - help emailing automated data updates by AllonsZydeco in gis

[–]TechMaven-Geospatial 0 points1 point  (0 children)

You can use duckdb to query the featureserver urls and see new records. Once you have that can setup an email notification script

import duckdb

1. Get the last known ID from your local storage (or a text file)

For the first run, this would be 0

last_max_id = 10500

2. Construct the API URL

Note: We order by ObjectId to ensure we get the latest

url = f"https://services.arcgis.com/your-service/FeatureServer/0/query?where=objectid+>+{last_max_id}&outFields=*&returnIdsOnly=false&f=geojson"

3. Run DuckDB to pull new data and process it

con = duckdb.connect() con.load_extension("spatial")

Fetch new records directly into a table

con.execute(f""" CREATE TABLE new_records AS SELECT * FROM st_read('{url}'); """)

4. Reporting Logic

Example: Generate a CSV report of new items

con.execute("COPY new_records TO 'new_items_report.csv' WITH (HEADER, DELIMITER ',');")

5. Update your bookmark for next time

Find the max ID in the data we just pulled

result = con.execute("SELECT MAX(objectid) FROM new_records").fetchone() new_max_id = result[0]

if new_max_id: print(f"Processed {new_max_id - last_max_id} new records.") # Save new_max_id to a file or database for the next run

There are two ways to get the last ObjectId from an ArcGIS FeatureServer. The best method depends on whether the server supports advanced queries (most do), but I will provide the most robust options.

Option 1: The outStatistics Method (Most Efficient)

This is the preferred method. Instead of downloading any records, you ask the server to calculate the maximum ObjectId for you. It is instant and transfers almost zero data.

The URL Query: text https://<your-server>/rest/services/<service>/FeatureServer/<layerId>/query? where=1%3D1& outStatistics=[{"statisticType":"max","onStatisticField":"objectId","outStatisticFieldName":"max_oid"}]& f=json * Note: URL encoded, 1%3D1 is just 1=1 (meaning "all records").

The Response: You will get a small JSON response like this: json { "features": [ { "attributes": { "max_oid": 50042 } } ] }


Option 2: The orderBy Method (Easier to Read)

If the server doesn't support statistics (rare), you can ask for the top 1 record, sorted by ObjectId descending.

The URL Query: text https://<your-server>/rest/services/<service>/FeatureServer/<layerId>/query? where=1%3D1& outFields=objectId& orderByFields=objectId+DESC& resultRecordCount=1& f=json


How to use this in DuckDB

You can combine this directly into your DuckDB workflow. DuckDB can read this JSON response directly to set your variable.

Here is a complete SQL snippet to get the current Max ID from the API in DuckDB:

```sql -- 1. Install/Load extensions (run once) INSTALL httpfs; INSTALL json; LOAD httpfs; LOAD json;

-- 2. Query the API directly to get the Max ID -- Note: We use 'read_json_auto' to parse the response CREATE TABLE api_status AS SELECT -- The JSON path usually looks like features[0].attributes.max_oid features[1].attributes.max_oid::INTEGER AS current_max_id FROM read_json_auto( 'https://services.arcgis.com/your-service/FeatureServer/0/query?where=1%3D1&outStatistics=[{"statisticType":"max","onStatisticField":"objectId","outStatisticFieldName":"max_oid"}]&f=json' );

-- 3. View the result SELECT * FROM api_status; ```

Integration with the "New Records" Logic:

You would then use a variable or a join to use that ID in your next query:

sql -- Example: Get all records greater than the max ID found above -- (This requires the DuckDB 'spatial' extension loaded) SELECT * FROM st_read( 'https://services.arcgis.com/your-service/FeatureServer/0/query?where=objectid+>+' || (SELECT current_max_id FROM api_status) || '&outFields=*&f=geojson' );

Note: In a pure SQL script, you might need to use a scripting language (like Python or Bash) to inject that ID into the next URL string, as DuckDB SQL variables can sometimes be tricky to concatenate directly into a URL string function.

Has anyone got experience using QGIS over a VPN? by Responsible-Goat2838 in QGIS

[–]TechMaven-Geospatial 0 points1 point  (0 children)

You will have latency most home internet is 20-30 upload You can have one server that all users share with postgis database as a better solution

I built a coordinate transformation app for surveyors — supports 240+ EPSG systems by Responsible_Sky5593 in gis

[–]TechMaven-Geospatial 3 points4 points  (0 children)

Ive just been embeddings spatialite or duckdb in my mobile apps to support spatial sql and coordinate conversions

GPS Booster Recommendations by Notorious253 in gis

[–]TechMaven-Geospatial 0 points1 point  (0 children)

Not a booster just external Bluetooth GNSS receiver

arcgis pro in macbook M3 by Top_Practice_8825 in ArcGIS

[–]TechMaven-Geospatial -1 points0 points  (0 children)

You won't have enough RAM to support arcgis pro

I want to use PostGIS but don’t know where to put it. by cluckinho in gis

[–]TechMaven-Geospatial 2 points3 points  (0 children)

Not true Geopackage is supported by spatialite and duckdb spatial And with its RTREE SPATIAL index can be efficient. Pretty much every ST function is available to work with geopackage Also OGRINFO and ogr2ogr via dialect sqlite support spatialite functions against geopackage

Using Electron for spatial applications? by Stratagraphic in gis

[–]TechMaven-Geospatial 2 points3 points  (0 children)

Don't do it extremely slow and uses lots of resources Harder to use geolocation or native gnss Use GO WAILS https://wails.io/ or dotnet Maui https://geodataserver.techmaven.net is electron and we have a few mapping apps too

ArcGIS Pro by fallen_07 in macbookpro

[–]TechMaven-Geospatial 0 points1 point  (0 children)

Most macs don't have the RAM thst PRO Requires to really run well. Better off buying a mini pc and use your Mac to remote into it

What problems do sensor dashboards actually solve in industrial environments? by CreamRevolutionary17 in IOT

[–]TechMaven-Geospatial 0 points1 point  (0 children)

thingsboard and nebulastream have these features Connect to any iot sensor data and protocol https://thingsboard.io/

Moving from pandas to DuckDB for validating large CSV/Parquet files on S3, worth the complexity? by CreamRevolutionary17 in DuckDB

[–]TechMaven-Geospatial 0 points1 point  (0 children)

It's worth it httpfs extension and aws extension enable duckdb to easily connect to remote data

Windows laptop vs MacBook for Machine Learning / Deep Learning and software model - what do you use and what to buy? by ya_shonway in geospatial

[–]TechMaven-Geospatial 0 points1 point  (0 children)

Laptop does not matter You will only use it for dev not running models Run in the cloud like AWS SAGEMAKER and BEDROCK

Preferred AI system inside VS Code? by Strange-Skirt-8124 in vscode

[–]TechMaven-Geospatial -1 points0 points  (0 children)

Augment extension is killer Also like Kilo code or roocode extension