[Feature]: Read every feature of an ArcGIS FeatureServer or MapServer layer, past its record limit
Maintainers usually reply within 1 day
@Mavrick-F is already working on this.
Since Oct 23, 2026.
Assessment
This issue has not been assessed yet.
Description
Before you start
- I searched the existing issues and the roadmap and did not find a duplicate request.
What problem does this solve?
ArcGIS feature and map services return at most maxRecordCount features per query, often 1,000 or 2,000. A county's parcel or zoning layer is usually far bigger. RustGIS reads the first page only and then says "the server sent its first features only (its record limit); the rest aren't read" (ogc::partial_note). The layer looks complete on the map until you look closely, and many local governments publish their data only this way, through ArcGIS Hub or their own servers.
OGC API Features layers already read every page (#519, ogc::join_pages, desktop), but that follows next links. ArcGIS answers have no next link; they set exceededTransferLimit and expect the client to ask again with resultOffset.
Proposed solution
- When an ArcGIS
queryanswer setsexceededTransferLimit, fetch the following pages withresultOffsetandresultRecordCount(the layer'smaxRecordCount), within the same limitsjoin_pagesuses today (MAX_PAGED_FEATURES, the byte budget and the timeout), and keep the note when a limit cuts the layer short. - Fall back to the current first-page behaviour, with its note, for servers that don't support pagination (
advancedQueryCapabilities.supportsPaginationfalse, or ArcGIS Server before 10.3). - Tests with recorded answers: two pages that join, a server without pagination, a page limit reached, and a hostile
maxRecordCount(0, negative, huge).
Open question: the web app doesn't page at all today, for OGC API either. Should this cover the browser too, or stay desktop-only like #519 for now?
Estimated scope
Small to medium: rustgis-data (ogc.rs) and engine/src/cmd/service.rs; no new dependency, no change to command ids or the project format.
Alternatives considered
- Paging by object ID (
returnIdsOnly, then batches ofobjectIds) works on servers withoutresultOffset, but costs an extra request and very long URLs. Possible later as the fallback. - Leaving it to GDAL's ESRIJSON driver needs GDAL installed and doesn't work in the browser.
I'm taking this one.
- Dominant language
- Rust
- Stars
- 1.9k
- Forks
- 268
- Avg merge
- 3h 1m
- Merged PRs (30d)
- 556
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from opengeos/RustGIS
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
enhancement enhancement (small)
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
enhancement (small) good first issue
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Maintainers usually reply within 1 day
-
enhancement wishlist
Difficulty 5/5 Over a week Newbie friendliness 25/100
Maintainers usually reply within 1 day
-
[Bug]: Unique Values symbology fails with "field is required" for layers without numeric fieldsPossibly taken @deniial00 claimed this today. Openunconfirmed possible issue
opengeos/RustGIS#768 · 1 assignee ·
Maintainers usually reply within 1 day
All issues in opengeos/RustGIS
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
DayuanJiang/PecoFence#139 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
nearai/compose-manager#73 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
akitaonrails/ai-memory#1664 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day