gpt4 book ai didi

javascript - 使用传单获取 geojson 大陆/国家/州的中心

转载 作者:行者123 更新时间:2023-11-30 15:31:58 26 4
gpt4 key购买 nike

有没有办法找到由多个多边形对象组成的国家/大陆的中心(例如美国、加拿大,除了主要陆地部分外还有一个岛屿)?我尝试使用 leaflet 的 Layer.getCenter() 甚至 Layer.getBounds().getCenter(),但这些方法肯定不适用于此类国家并返回“不通过”的结果。

示例可以通过以下链接(传单 Playground )看到。只需滚动并单击美国或加拿大,然后查看 circleMarker 将出现在何处。然后尝试点击较小的实体,比如美国南部的一些岛屿,他们会把这个标记精确地放在它们的中心:

http://playground-leaflet.rhcloud.com/voyi/1/edit?html,output

最佳答案

Leaflet 只能计算特征边界框的中心。在其他库(例如 Turf.js)的帮助下,您可以计算出 centroid。的多边形或(多边形)。

无论如何,您会感到困惑,因为有时质心不在多边形(或多多边形)内:


(来源:postgis.net)

(图 1. 根据 PostGIS's ST_Centroid documentation 的多边形质心)

所以我猜你真正想问的是:

Given a polygon or multipolygon, how can I calculate a center (or center-like point) which is guaranteed to be within the polygon and looks visually in the center of it, in order to add symbolizers to that point with Leaflet?

为此,答案是 "pole of inaccessibility"polylabel 实现: «距多边形轮廓最远的内部点»。

关于javascript - 使用传单获取 geojson 大陆/国家/州的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com