geo_polygon_densify()
Ara noktalar ekleyerek çokgen veya çok kutuplu planar kenarları jeodeziklere dönüştürür.
Sözdizimi
geo_polygon_densify(
çokgen,
tolerans,
[ preserve_crossing ])
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Zorunlu | Açıklama |
---|---|---|---|
çokgen | dynamic |
✔️ | GeoJSON biçiminde çokgen veya çok kutuplu. |
hoşgörü | int, long veya real | Orijinal planar kenar ile dönüştürülmüş jeodezik kenar zinciri arasındaki metre cinsinden maksimum mesafeyi tanımlar. Desteklenen değerler [0,1, 10000] aralığındadır. Belirtilmezse, varsayılan değer olur 10 . |
|
preserve_crossing | bool |
ise true , kenar geçişini antimeridian üzerinden korur. Belirtilmezse, varsayılan değer false kullanılır. |
Çokgen tanımı
dynamic({"type": "Polygon","coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon","coordinates": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
LinearRingShell
gerekli ve [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]] sıralı bircounterclockwise
koordinat dizisi olarak tanımlanır. Tek bir kabuk olabilir.LinearRingHole
isteğe bağlıdır ve [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]] sıralı birclockwise
koordinat dizisi olarak tanımlanır. Herhangi bir sayıda iç halka ve delik olabilir.LinearRing
köşeler en az üç koordinatla ayrı olmalıdır. İlk koordinat son koordinata eşit olmalıdır. En az dört giriş gereklidir.- Koordinatlar [boylam, enlem] geçerli olmalıdır. Boylam [-180, +180] aralığında gerçek bir sayı ve enlem [-90, +90] aralığında gerçek bir sayı olmalıdır.
LinearRingShell
kürenin büyük bir kısmını çevreler. LinearRing, küreyi iki bölgeye böler. İki bölgenin küçük kısmı seçilir.LinearRing
kenar uzunluğu 180 dereceden az olmalıdır. İki köşe arasındaki en kısa kenar seçilir.
Sınırlamalar
- Densified poligonundaki maksimum nokta sayısı 10485760 ile sınırlıdır.
- Çokgenleri dinamik biçimde depolamanın boyut sınırları vardır.
- Geçerli bir çokgenin reddedilmesi çokgeni geçersiz kılabilir. Algoritma, noktaları tekdüzen olmayan bir şekilde ekler ve bu nedenle kenarların birbiriyle iç içe olmasına neden olabilir.
Motivasyon
- GeoJSON biçimi, iki nokta arasındaki kenarı düz kartezyen çizgi olarak tanımlarken
geo_polygon_densify()
jeodezik kullanır. - Jeodezik veya planlı kenarları kullanma kararı veri kümesine bağlı olabilir ve özellikle uzun kenarlarda geçerlidir.
Döndürülenler
GeoJSON biçiminde ve dinamik bir veri türünde çokgen reddedildi. Çokgen veya tolerans geçersizse, sorgu null bir sonuç üretir.
Not
Jeo-uzamsal koordinatlar WGS-84 koordinat başvuru sistemi tarafından temsil edilen şekilde yorumlanır.
Örnekler
Aşağıdaki örnek, Manhattan Central Park çokgenini reddeder. Kenarlar kısadır ve planlı kenarlar ile jeodezik karşılıkları arasındaki mesafe toleransla belirtilen mesafeden daha azdır. Bu nedenle sonuç değişmeden kalır.
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]})))
Çıktı
densified_polygon |
---|
{"type":"Polygon","coordinates":[[-73.958244,40.800719],[-73.949146,40.79695],[-73.73.1973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]} |
Aşağıdaki örnek, çokgenin iki kenarını bildirir. Kenar uzunluğu yaklaşık 110 km'dir
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]})))
Çıktı
densified_polygon |
---|
{"type":"Polygon","coordinates":[[10,10],[10,25,10],[10,5,10],[10,75,10],[11,10],[11,11],[10,75,11],[10,5,11],[10,25,11],[10,11],[10,10]]]]} |
Aşağıdaki örnek, geçersiz koordinat girişi nedeniyle null bir sonuç döndürür.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,900],[11,10],[11,11],[10,11],[10,10]]]}))
Çıktı
densified_polygon |
---|
Aşağıdaki örnek, geçersiz tolerans girişi nedeniyle null bir sonuç döndürür.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]}), 0)
Çıktı
densified_polygon |
---|
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin