【发布时间】:2019-04-29 10:23:25
【问题描述】:
经过一周的测试和研究,我决定“放弃”并向你们寻求帮助。
我想要完成的事情相当容易。
- 将世界地图分成 4 个象限(完成)
- 取每个象限,并使用 turf 计算包含多少个 N 个单位的正方形。
前两个象限一切正常:A(红色)、B(绿色)
事实上,如果我尝试使用 turf 用正方形填充前两个象限,结果是正确的:
问题在于,当尝试在下面的方块上复制相同的逻辑时,turf 返回 0 个方块...
用Leaflet创建4个象限的代码如下:
const quadrantA = L.rectangle(L.latLngBounds(L.latLng(90, -180), L.latLng(0, 0)), { weight: 1, fillColor: 'red', color: 'red' });
const quadrantB = L.rectangle(L.latLngBounds(L.latLng(90, 0), L.latLng(0, +180)), { weight: 1, fillColor: 'green', color: 'green' });
const quadrantC = L.rectangle(L.latLngBounds(L.latLng(0, -180), L.latLng(-90, 0)), { weight: 1, fillColor: 'blue', color: 'blue' });
const quadrantD = L.rectangle(L.latLngBounds(L.latLng(0, 0), L.latLng(-90, 180)), { weight: 1, fillColor: 'yellow', color: 'yellow' });
quadrantA.addTo(this.map);
quadrantB.addTo(this.map);
quadrantC.addTo(this.map);
quadrantD.addTo(this.map);
同时,用 turf 计算每个象限中的正方形的代码如下:
const QGrid_A = turf.squareGrid(turf.bbox(quadrantA.toGeoJSON()), 500, { units: 'kilometers' });
const QGrid_B = turf.squareGrid(turf.bbox(quadrantB.toGeoJSON()), 500, { units: 'kilometers' });
const QGrid_C = turf.squareGrid(turf.bbox(quadrantC.toGeoJSON()), 500, { units: 'kilometers' });
const QGrid_D = turf.squareGrid(turf.bbox(quadrantD.toGeoJSON()), 500, { units: 'kilometers' });
问题是,“第二轮”计算总是返回 0 个象限 C 和 D 的特征。
QGrid_A 特征:800
QGrid_B 特征:800
QGrid_C 特征:0
QGrid_D 特征:0
我还了解到 Leaflet 通过使用 [LAT,LON] 而不是 [LON,LAT] 来反转标准 GeoJSON 坐标位置,因此我也尝试反转结果Leaflet 通过在坐标数组上执行 reverse 生成 GeoJSON,但仍然没有。
我想知道我哪里错了?这是“循环”坐标的问题吗?由于 Leaflet 和 Turf 之间的虚假转换,这是一个问题吗?是我笨吗?请帮帮我。
【问题讨论】:
-
您解决了这个问题吗?如果是,您可以分享您的经验
-
嘿@Travnikov 我刚刚发布了我的解决方案。希望能帮助到你。如果您需要更多详细信息,请询问;)
标签: leaflet coordinates gis turfjs