如何解决带孔的 GeoJson LineString 特征集合
我有一长串坐标(由 GPS 传感器发送)来表示资产的移动。
我正在使用传单来呈现 GeoJSON,如果我将 LineString 呈现为单个特征,它可以正常工作,但是如果我将其分解为多个特征(在 FeatureCollection 中 - 应用不同的动态颜色),我开始参见特征之间的“漏洞”。
我很确定这是因为我收到的数据中实际上存在一个“漏洞”。但为什么它可以作为单个 LineString 功能?有没有办法解决这个问题?
这是GeoJSON(非常大的对象)的摘录
对象的 866 个特征中有 3 个
{
"type":"Feature","properties":{
"type":"traffic","color":"#ffa600"
},"geometry":{
"type":"LineString","coordinates":[
[
7.583125,45.0485616
],[
7.5830532999999996,45.0485816
],[
7.58299,45.0486133
],[
7.582893299999999,45.0486066
],[
7.5828682999999995,45.04859
]
]
}
},
链接到垃圾箱
https://jsbin.com/nexijajake/edit?html,output
具有单一特征的示例
https://jsbin.com/guqihajalu/1/edit?html,output
解决方法
其实渲染没什么问题。您的 data
数组(在您的 jsbin 链接中)是一个彼此不连接的线串数组。你有一个这样的模式(想象每一行都是一个线串):
[pointA-pointB-pointC]
[pointD-pointE-pointF]
为了使您的线条连续,每个线串的最后一个点应作为第一个点存在于下一个线串中:
[pointA-pointB-pointC]
[pointC-pointD-pointE-pointF]
这样,您的线条将是连续的。
例如,以下示例(取自您的 jsbin)有一个缺口:
const data = [
{
"type":"Feature","properties":{
"type":"traffic","color":"#ffa600"
},"geometry":{
"type":"LineString","coordinates":[
[
7.583125,45.0485616
],[
7.5830532999999996,45.0485816
],[
7.58299,45.0486133
],[
7.582893299999999,45.0486066
],[
7.5828682999999995,45.04859
]
]
}
},{
"type":"Feature","properties":{
"type":"normal","color":"#07e36a"
},"coordinates":[
[
7.582795,45.0485149
],[
7.582624999999999,45.0483233
],[
7.581984899999999,45.047521599999996
]
]
}
}
];
间隙固定(第二个线串的第一个点是第一个线串的最后一个点):
const data = [
{
"type":"Feature","coordinates":[
//the first point here is the last of previous linestring
[
7.5828682999999995,45.04859
],[
7.582795,45.047521599999996
]
]
}
}
];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。