Repository navigation
DiGi.GIS.WebAPI.Constants
Provides the compression settings applied to request payloads sent to the GIS PostgreSQL Web API.
public static class CompressionInheritance System.Object → Compression
The GZip compression level used for request payloads.
System.IO.Compression.CompressionLevel.Fastest rather than System.IO.Compression.CompressionLevel.Optimal: on the bulk import path the client is CPU bound, and compressing a multi-megabyte JSON batch at System.IO.Compression.CompressionLevel.Optimal costs several times more than it saves in transfer. Revisit if the link to the host becomes the bottleneck.
public static readonly CompressionLevel Level;System.IO.Compression.CompressionLevel
Provides constant values for file names used within the GIS PostgreSQL Web API.
public static class FileNameInheritance System.Object → FileName
Gets the filename of the configuration file for the GIS PostgreSQL Web API.
public const string GISWebAPIConfigurationFile = "GIS_WebAPI.conf";Provides the names of the HTTP headers the GIS Web API sets on its responses.
public static class HeaderInheritance System.Object → Header
The response header carrying the cursor of the next page of a physical-order building data read. Absent when the county part is exhausted, and absent when the endpoint answered in reference order instead.
public const string NextCursor = "DiGi-Next-Cursor";Provides a collection of constant name identifiers used within the GIS PostgreSQL Web API.
public static class NameInheritance System.Object → Name
Provides the identifiers for the named HTTP clients created by the Web API.
public static class Name.ClientInheritance System.Object → Client
The Geoportal client identifier.
public static string Geoportal;The GIS client identifier.
public static string GIS;The GUGiK (Główny Urząd Geodezji i Kartografii) client identifier.
public static string GUGiK;Provides the limits applied to orthophoto queries served by the GIS PostgreSQL Web API.
public static class OrtoDatasInheritance System.Object → OrtoDatas
The largest number of distinct counties one coverage request may have measured exactly.
A subdivision or a municipality has no partition of its own, so its coverage is counted rather than estimated - one read per side of the county it sits in, measured at 0.10 s for a county of 33 000 buildings and 0.63 s for the largest in the country. Every subdivision and municipality of one county is served from that single pass, so the cost follows the counties named and not the identifiers.
The ceiling of 500 allows full-country listings covering all 380 Polish counties at once, while protecting the database connection pool against unbounded input.
public static readonly int MaximumCoverageCountyCount;The largest number of references a subdivision comparison may name back per category.
The comparison itself walks a whole county, and the counts it returns are exact whatever this is set to. The samples exist to make a disagreement actionable without returning a hundred thousand strings, so the ceiling bounds the response rather than the work.
public static readonly int MaximumSampleCount;The largest number of counties a summary or queue request may name at once.
Each county costs a grouped aggregate over one partition, which is cheap, but the request is unauthenticated and naming every county in the country in one call is not what these are for. Omitting the identifiers entirely is still allowed and answers every partition in a single grouped statement, which is one query rather than many.
public static readonly int MaximumSummaryCountyCount;Provides the limits applied to terrain queries served by the GIS PostgreSQL Web API.
public static class TerrainInheritance System.Object → Terrain
How many times its own vertex spacing a terrain mesh triangle's longest edge may reach before it is treated as bridging no data.
A Delaunay triangulation covers the convex hull of its sites, so without a limit the mesh bridges county edges, no-data gaps and concave outlines with a skirt of long thin triangles that look like terrain and are not.
Expressed as a multiple of local spacing rather than as a distance, because the stored lattice is not the only sampling this has to survive: points added where the ground moves sharply make one area denser than another, and any fixed distance is then simultaneously too tight for the coarse part and too loose for the fine part. A factor measures each triangle against its own vertices and needs no retuning when the sampling changes.
The consequence to know when reading a served mesh: an empty area entirely enclosed by terrain - a lake, or a pocket the elevation service has no data for - is now spanned flat rather than left open, because nothing over it reaches the boundary to be removed. That is acceptable for a surface that is rendered; it is not a licence to treat the mesh as measured ground everywhere it has vertices.
On the present 100 m lattice this behaves like a limit of about 250 m. It only governs the outer edge: DiGi.Geometry.PointCloud.Core.Query.ErodedIndexes(System.Double[],System.Double[],System.Collections.Generic.List{System.Int32[]},System.Double) removes triangles from the boundary inwards, so a point missing from the interior keeps the triangles around it and reads as a flat spot rather than a hole.
public static readonly double EdgeLengthFactor;The largest number of counties a single density request may name.
A density costs the reading of every subdivision outline of the county it is asked for, so this is what keeps one request from pulling the administrative geometry of the whole country. Sweeping every county means several requests, which is also what makes the sweep interruptible.
public static readonly int MaximumDensityCountyCount;The longest side, in model units, a gap request may ask for.
Larger than the mesh endpoints admit, because a gap request returns coordinates rather than a triangulated surface and is meant for looking over a region at once. It is still bounded by MaximumNodeCount at any given lattice.
public static readonly double MaximumGapExtent;The largest number of lattice nodes a single coverage or gap request may generate.
Checked against the requested area before any node is built, so an area and a lattice that would together exceed it are refused rather than started. This is the cap that holds when a large county meets a fine lattice, both of which are individually allowed.
public static readonly long MaximumNodeCount;The largest search radius, in model units, a terrain request may ask for.
The terrain endpoints are unauthenticated reads with no natural ceiling of their own: the radius alone decides how many stored points are gathered, triangulated and serialised, and the store is partitioned by county rather than capped by extent. Without this a single request can ask for the whole country.
The cap is a half-extent, so the largest search area is 4 km by 4 km. Counties are sampled onto a lattice between 10 m and 100 m, which puts the worst case at roughly 160 000 points. Raising this is safe only if the finest lattice is never queried at the new size - at 5 000 m the same lattice yields about a million points.
public static readonly double MaximumRadius;The finest lattice, in model units, a coverage or gap request may be measured against.
The work of those endpoints rises with the square of how fine the lattice is: they generate every node of a county and decide each one against its outlines. A county of 1 000 square kilometres is 100 000 nodes at 100 m and 10 million at 10 m, and below that the request stops being a diagnostic and becomes a denial of service that anyone can send.
public static readonly double MinimumGridSize;Provides constant URI values used throughout the PostgreSQL Web API application.
public static class UriInheritance System.Object → Uri
Gets or sets the base address for the Web API services.
public static Uri BaseAddress;