Summary
The honua.v1.FeatureService proto exposes only QueryFeatures,
QueryFeaturesStream, and ApplyEdits. It has no attachment RPCs and the
QueryFeaturesRequest message has no time-filter field and no
grouped-statistics having field. As a result, the .NET SDK's gRPC client —
the workhorse feature transport — cannot serve media-bearing or
temporal/statistical geoprocessing (GP) operations natively and throws
NotSupportedException for:
ListAttachments / DownloadAttachment / AddAttachment /
UpdateAttachment / DeleteAttachment
- a provider-neutral time filter on a query
- a grouped-statistics
having clause on a query
GeoServices FeatureServer (REST) supports all of these, so the SDK now ships an
interim fix (honua-sdk-dotnet PR — feat/gp-attachments-grpc-parity): a unified
IHonuaFeatureGateway routes attachments and time/having queries to the
GeoServices client even when features stream over gRPC, plus per-client
FeatureQueryCapabilities flags (SupportsTimeFilter/SupportsHaving/...).
That removes the runtime throw for GP tools but means media + temporal/summary
work falls back to REST rather than going over the gRPC channel.
Long-term fix (this repo — proto source of truth)
To reach native gRPC parity with the GeoServices surface and Esri SDK feature
tools:
- Attachment RPCs on
FeatureService: ListAttachments,
DownloadAttachment (server-stream for large media), AddAttachment
(client-stream), UpdateAttachment, DeleteAttachment, with request/response
messages mirroring the GeoServices attachment contract
(parent object id, attachment id, global id, name, content type, size,
keywords, bytes/stream).
- Time filter on
QueryFeaturesRequest: a TimeFilter message
(instant or start/end interval + a time relation) matching arcpy's
time-aware queries and the SDK's FeatureTimeFilter.
having field on QueryFeaturesRequest for grouped statistics, matching
the SDK's FeatureQueryRequest.Having and the GeoServices having parameter.
Once the proto lands, the server implements the RPCs/fields and the SDK gRPC
client implements the five attachment methods + the two query facets, flips its
capability flags to true, and the gateway routing becomes a transport
optimization rather than a correctness requirement.
Links
- SDK assessment gap: ATTACHMENTS + gRPC-query parity for media-bearing and
temporal/statistical GP.
- SDK interim PR: honua-sdk-dotnet
feat/gp-attachments-grpc-parity.
Summary
The
honua.v1.FeatureServiceproto exposes onlyQueryFeatures,QueryFeaturesStream, andApplyEdits. It has no attachment RPCs and theQueryFeaturesRequestmessage has no time-filter field and nogrouped-statistics
havingfield. As a result, the .NET SDK's gRPC client —the workhorse feature transport — cannot serve media-bearing or
temporal/statistical geoprocessing (GP) operations natively and throws
NotSupportedExceptionfor:ListAttachments/DownloadAttachment/AddAttachment/UpdateAttachment/DeleteAttachmenthavingclause on a queryGeoServices FeatureServer (REST) supports all of these, so the SDK now ships an
interim fix (honua-sdk-dotnet PR — feat/gp-attachments-grpc-parity): a unified
IHonuaFeatureGatewayroutes attachments and time/having queries to theGeoServices client even when features stream over gRPC, plus per-client
FeatureQueryCapabilitiesflags (SupportsTimeFilter/SupportsHaving/...).That removes the runtime throw for GP tools but means media + temporal/summary
work falls back to REST rather than going over the gRPC channel.
Long-term fix (this repo — proto source of truth)
To reach native gRPC parity with the GeoServices surface and Esri SDK feature
tools:
FeatureService:ListAttachments,DownloadAttachment(server-stream for large media),AddAttachment(client-stream),
UpdateAttachment,DeleteAttachment, with request/responsemessages mirroring the GeoServices attachment contract
(parent object id, attachment id, global id, name, content type, size,
keywords, bytes/stream).
QueryFeaturesRequest: aTimeFiltermessage(instant or start/end interval + a time relation) matching arcpy's
time-aware queries and the SDK's
FeatureTimeFilter.havingfield onQueryFeaturesRequestfor grouped statistics, matchingthe SDK's
FeatureQueryRequest.Havingand the GeoServiceshavingparameter.Once the proto lands, the server implements the RPCs/fields and the SDK gRPC
client implements the five attachment methods + the two query facets, flips its
capability flags to
true, and the gateway routing becomes a transportoptimization rather than a correctness requirement.
Links
temporal/statistical GP.
feat/gp-attachments-grpc-parity.