geo_polygon_simplify()
Leegyszerűsíti a sokszöget vagy a többpógonyt azáltal, hogy a rövid élek majdnem egyenes láncait egyetlen hosszú élre cseréli a Földön.
Syntax
geo_polygon_simplify(
Sokszög,
Tolerancia)
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
Sokszög | dynamic |
✔️ | Sokszög vagy többpógony GeoJSON formátumban. |
Tolerancia | int, long vagy real | A maximális távolságot határozza meg méterben az eredeti planáris él és az átalakított geodéziai éllánc között. A támogatott értékek a(z) [0,1, 10000] tartományban vannak. Ha nincs meghatározva, az alapértelmezett érték a .10 |
Válaszok
GeoJSON formátumban és dinamikus adattípusú, egyszerűsített sokszög vagy többpógony, két csúcspont nélkül, a tűréshatárnál kisebb távolsággal. Ha a sokszög vagy a tűrés érvénytelen, a lekérdezés null eredményt ad.
Megjegyzés
- Ha a bemenet több, kölcsönös határral rendelkező sokszöggel rendelkezik, lásd: geo_simplify_polygons_array().
- A térinformatikai koordinátákat a WGS-84 koordináta-referenciarendszer képviseli.
- A Földi mérésekhez használt geodéziai datum egy gömb. A sokszög élek geodéziaiak a gömbön.
- Ha a bemeneti sokszögélek egyenes cartesian vonalak, fontolja meg a geo_polygon_densify() használatát a planáris élek geodéziaiká alakításához.
- Ha a bemenet többpógonyú, és több sokszöget tartalmaz, az eredmény a sokszögek egyesítő területe lesz.
- A nagy tolerancia kis sokszög eltűnéséhez vezethet.
Sokszög definíciója és megkötései
dynamic({"type": "Polygon","coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon","coordinates": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- A LinearRingShell a [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]] rendezett tömbjeként
counterclockwise
van definiálva. Csak egy héj lehet. - A LinearRingHole nem kötelező, és a koordináták rendezett tömbjeként
clockwise
van definiálva [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Bármilyen számú belső gyűrű és lyuk lehet. - A LinearRing csúcsainak legalább három koordinátával kell különbözniük. Az első koordinátának meg kell egyeznie az utolsóval. Legalább négy bejegyzésre van szükség.
- A koordinátáknak [hosszúság, szélesség] érvényesnek kell lenniük. A hosszúságnak valós számnak kell lennie a(z) [-180, +180] tartományban, a szélességnek pedig valós számnak kell lennie a(z) [-90, +90] tartományban.
- A LinearRingShell a gömb legfeljebb felét tartalmazza. A LinearRing két régióra osztja a gömböt. A két régió közül a kisebb lesz kiválasztva.
- A LinearRing élhosszának 180 foknál kisebbnek kell lennie. A két csúcspont közötti legrövidebb él lesz kiválasztva.
- A LinearRings nem lehet kereszt, és nem oszthatja meg az éleket. A LinearRings csúcsokat oszthat meg.
Példák
Az alábbi példa leegyszerűsíti a sokszögeket azáltal, hogy eltávolítja az egymástól 10 méter távolságra lévő csúcspontokat.
let polygon = dynamic({"type":"Polygon","coordinates":[[[-73.94885122776031,40.79673476355657],[-73.94885927438736,40.79692258628347],[-73.94887939095497,40.79692055577034],[-73.9488673210144,40.79693476936093],[-73.94888743758202,40.79693476936093],[-73.9488834142685,40.796959135509105],[-73.94890084862709,40.79695304397289],[-73.94906312227248,40.79710736271788],[-73.94923612475395,40.7968708081794],[-73.94885122776031,40.79673476355657]]]});
print simplified = geo_polygon_simplify(polygon)
Kimenet
Egyszerűsített |
---|
{"type": "Polygon", "coordinates": [[[-73.948851227760315, 40.796734763556572],[-73.949063122272477, 40.797107362717881],[-73.949236124753952, 40,7968708081794],[-73.948851227760315, 40.796734763556572]]]} |
Az alábbi példa leegyszerűsíti a sokszögeket, és egyesíti az eredményeket a GeoJSON geometriagyűjteményben.
Polygons
| project polygon = features.geometry
| project simplified = geo_polygon_simplify(polygon, 1000)
| summarize lst = make_list(simplified)
| project geojson = bag_pack("type", "Feature","geometry", bag_pack("type", "GeometryCollection", "geometries", lst), "properties", bag_pack("name", "polygons"))
Kimenet
geojson |
---|
{"type": "Feature", "geometry": {"type": "GeometryCollection", "geometries": [ ... ]}, "properties": {"name": "polygons"}} |
Az alábbi példa leegyszerűsíti a sokszögeket és egységesíti az eredményt
US_States
| project polygon = features.geometry
| project simplified = geo_polygon_simplify(polygon, 1000)
| summarize lst = make_list(simplified)
| project polygons = geo_union_polygons_array(lst)
Kimenet
Sokszög |
---|
{"type": "MultiPolygon", "koordináták": [ ... ]} |
Az alábbi példa igaz értéket ad vissza az érvénytelen sokszög miatt.
let polygon = dynamic({"type":"Polygon","coordinates":[[[5,48],[5,48]]]});
print is_invalid_polygon = isnull(geo_polygon_simplify(polygon))
Kimenet
is_invalid_polygon |
---|
1 |
Az alábbi példa igaz értéket ad vissza az érvénytelen tűrés miatt.
let polygon = dynamic({"type":"Polygon","coordinates":[[[5,48],[0,50],[0,47],[4,47],[5,48]]]});
print is_invalid_polygon = isnull(geo_polygon_simplify(polygon, -0.1))
Kimenet
is_invalid_polygon |
---|
1 |
Az alábbi példa Igaz értéket ad vissza, mert a nagy tűrés miatt a sokszög eltűnik.
let polygon = dynamic({"type":"Polygon","coordinates":[[[5,48],[0,50],[0,47],[4,47],[5,48]]]});
print is_invalid_polygon = isnull(geo_polygon_simplify(polygon, 1000000))
Kimenet
is_invalid_polygon |
---|
1 |
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: