Freigeben über


geo_polygon_centroid()

Berechnet den Schwerpunkt eines Polygons oder eines Multipolygons auf der Erde.

Syntax

geo_polygon_centroid(Polygon)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
Polygon dynamic ✔️ Polygon oder Multipolygon im GeoJSON-Format.

Gibt zurück

Die Schwerpunktkoordinatenwerte im GeoJSON-Format und eines dynamischen Datentyps. Wenn Polygon oder Multipolygon ungültig sind, erzeugt die Abfrage ein NULL-Ergebnis.

Hinweis

  • Die Geokoordinaten werden durch das Koordinatenreferenzsystem WGS-84 dargestellt interpretiert.
  • Das geodätische Datum, das für Messungen auf der Erde verwendet wird, ist eine Kugel. Polygonränder sind geodätische Ränder auf der Kugel.
  • Wenn Eingabepolygonränder gerade kartesische Linien sind, sollten Sie geo_polygon_densify() verwenden, um planare Kanten in Geodätik zu konvertieren.
  • Wenn die Eingabe ein Multipolygon ist und mehr als ein Polygon enthält, ist das Ergebnis der Schwerpunkt von Polygonen Union.

Polygondefinition und Einschränkungen

dynamic({"type": "Polygon","coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})

dynamic({"type": "MultiPolygon","coordinates": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})

  • LinearRingShell ist erforderlich und definiert als sortiertes counterclockwise Array von Koordinaten [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Es kann nur eine Shell vorhanden sein.
  • LinearRingHole ist optional und als clockwise geordnetes Array von Koordinaten [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]definiert. Es kann eine beliebige Anzahl von Innenringen und Löchern geben.
  • LinearRing-Scheitelpunkte müssen mit mindestens drei Koordinaten getrennt sein. Die erste Koordinate muss gleich der letzten sein. Mindestens vier Einträge sind erforderlich.
  • Koordinaten [Längengrad, Breitengrad] müssen gültig sein. Längengrad muss eine reelle Zahl im Bereich [-180, +180] und Breitengrad eine reelle Zahl im Bereich [-90, +90] sein.
  • LinearRingShell umfasst höchstens die Hälfte der Kugel. LinearRing unterteilt die Kugel in zwei Regionen und wählt die kleinere der beiden Regionen aus.
  • Die LinearRing-Kantenlänge muss kleiner als 180 Grad sein. Der kürzeste Rand zwischen den beiden Scheitelpunkten wird ausgewählt.
  • LinearRings darf sich nicht kreuzen und keine Kanten gemeinsam nutzen. LinearRings kann Scheitelpunkte gemeinsam nutzen.

Beispiele

Im folgenden Beispiel wird der Central Park-Schwerpunkt in New York City berechnet.

let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print centroid = geo_polygon_centroid(central_park)

Ausgabe

Schwerpunkt
{"type": "Point", "coordinates": [-73.96573568907618, 40.782550538057812]}

Im folgenden Beispiel wird der Längengrad des Central Park-Schwerpunkts berechnet.

let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print 
centroid = geo_polygon_centroid(central_park)
| project lng = centroid.coordinates[0]

Ausgabe

Lng
-73.9657356899076

Im folgenden Beispiel wird die Vereinigung von Polygonen in Multipolygon durchgeführt und der Schwerpunkt des einheitlichen Polygons berechnet.

let polygons = dynamic({"type":"MultiPolygon","coordinates":[[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]],[[[-73.94262313842773,40.775991804565585],[-73.98107528686523,40.791849155467695],[-73.99600982666016,40.77092185281977],[-73.96150588989258,40.75609977566361],[-73.94262313842773,40.775991804565585]]]]});
print polygons_union_centroid = geo_polygon_centroid(polygons)

Ausgabe

polygons_union_centroid
"type": "Point", "coordinates": [-73.968569587829577, 40.776310752555119]}

Im folgenden Beispiel wird der Central Park-Schwerpunkt auf einer Karte visualisiert.

let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print 
centroid = geo_polygon_centroid(central_park)
| render scatterchart with (kind = map)

Ausgabe

Screenshot: Zentrum des New York City Central Parks.

Im folgenden Beispiel wird aufgrund des ungültigen Polygons zurückgegeben true .

print isnull(geo_polygon_centroid(dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))

Ausgabe

print_0
true