当前位置: 首页 > 知识库问答 >
问题:

D3js地图:GeometryCollection与FeaturesCollection

伏欣悦
2023-03-14

我已经绘制地图好几个星期了,但每次我都有那种geojson文件(Featurecollection)。卡萨布兰卡不同社区的多个坐标数组(在我的示例中)

{“类型”:“特征集合”,“crs”:{“类型”:“名称”,“属性”:{“名称”:“urn:ogc:def:crs:ogc:1.3:CRS84”},“特征”:{“类型”:“特征”,“属性”:{“名称”:“sid elkhader”,“地区”:“Hay Hassani”,“人口”:18930,“面积”:1616340.045},“几何体”:{“类型”:“多边形”,“坐标”:[[-7.686476562432639, 33.559325447129368], [-7.690429687499997, 33.557167523684669], [-7.690712466572602, 33.55630146957499], [-7.69193172454834, 33.557239049346535], [-7.6959228515625, 33.56135167528992], [-7.696309089660644, 33.561208630718284], [-7.696545124053955, 33.561494719624619], [-7.697145938873291, 33.561584122213503], [-7.698111534118651, 33.562549664276048], [-7.696180343627932, 33.56406947713436], [-7.698715871374095, 33.566658445267336], [-7.697645503668443, 33.567405785590324], [-7.697098054802192, 33.567712878788591], [-7.696259117371391, 33.568261506969215], [-7.696011511349325, 33.5683181977139], [-7.697387200000034, 33.570266599999982], [-7.696740007740531, 33.570256969950947], [-7.695561836061942, 33.570528261065235], [-7.694268410063101, 33.570921223641093], [-7.693596744041679, 33.571075056616195], [-7.692447518598163, 33.571143296338079], [-7.69142000156123, 33.571163408675481], [-7.690155388704593, 33.57138033300906], [-7.689247978305328, 33.571612665313971], [-7.688806874513382, 33.571727285593433], [-7.688311409275937, 33.571857958148009], [-7.687409400000027, 33.572054400000049], [-7.687391678068598, 33.572059961946792], [-7.684979438782096, 33.568718150423749], [-7.683219909667969, 33.565678661594823], [-7.683406457011668, 33.563482296958043], [-7.683829534164441, 33.562429900601146], [-7.686476562432639,33.559325447129368]]},{“类型”:“特征”,“属性”:{“名称”:“纳西姆”,“地区”:“哈伊哈萨尼”,“州”:“哈伊哈萨尼”,“人口”:18898,“面积”:4776317.152},“几何”:{“类型”:“多边形”,“坐标”:[[-7.665259712372787,33.530737914470194],-7.663579428308825,33.5378517151],[-7.660416146883682, 33.53687582432655], [-7.653830735645996, 33.533727400613216], [-7.653876700000025, 33.5326443], [-7.65348, 33.531745500000149], [-7.653190299999866, 33.529947799999803], [-7.652943599999785, 33.528677899999671], [-7.653615699999913, 33.526604099999851], [-7.653936200000107, 33.525365200000174], [-7.654509399999957, 33.5241387], [-7.655106500000205, 33.522667000000347], [-7.656280299999967, 33.520306199999879], [-7.656956199999512, 33.519349099999339], [-7.658114900000093, 33.517926900000134], [-7.658983900000114, 33.516343700000149], [-7.659490200000375, 33.515535600000646], [-7.6601104, 33.5145457], [-7.660947299999948, 33.513347099999926], [-7.662599500000061, 33.511602700000104], [-7.664262500000047, 33.510654500000086], [-7.666333199999984, 33.509563099999966], [-7.668178499999983, 33.50827], [-7.668900600000119, 33.507543800000242], [-7.669823299999847, 33.506934599999816], [-7.670733100000266, 33.507059900000414], [-7.673713600000018, 33.50863970000001], [-7.676073900000079, 33.509053], [-7.68223779133892, 33.508502572767156], [-7.684989189541704, 33.508844023847608], [-7.683734893798827, 33.512559745083195], [-7.675151824951172, 33.519357925734134], [-7.674551010131836, 33.520717497758142], [-7.671031951904296, 33.524796085610056], [-7.668800354003906, 33.526441777122507], [-7.668285369873048, 33.528516734826688], [-7.665259712372787, 33.530737914470194] ] ] } } ....

现在,因为我正在从openstreemap导出geojson文件http://polygons.openstreetmap.fr/index.py 我为一个特定的城镇(没有社区,只有城镇的形式)准备了那种类型的geojson(GeometryCollection)

{“类型”:“几何集合”,“几何体”:[{“类型”:“多边形”,“坐标”:[[[[-5.9429266,35.74554830000003],-5.9379208,35.74328880000002],-5.9327023,35.7417388],-5.9272307,35.7412319999997],-5.9202848,35.74190949999998],-5.9166306,35.7464080000002],-5.9156028,35.7496942-5.9046279999],-5.90999999],[-5.9001726,35.762371000000002],[-5.8900896,35.7656931],[-5.8790518,35.756111199999999],[-5.8770798,35.7525902],[-5.8737711,35.745343900000002],[-5.872858,35.742017500000003],[-5.8727035,35.741004699999998],[-5.8699858,35.732553199999998],[-5.869492,35.731017299999998],[-5.8673423,35.728874099999999],[-5.8638447,35.7260068],[-5.8619479,35.7246934],[-5.8556436,35.720934100000001],[-5.8510603,35.719324399999998],[-5.8464426,35.716996799999997],[-5.8434943,35.714585599999999],[-5.8387091,35.711292700000001] ....

以下是我的问题:

  1. 当我尝试使用Geometrycollection geojson类型绘制地图时,我得到了一个带有空白点的巨大正方形,是不是因为我只有一个单一的坐标数组,而不像第一个示例那样有多个
  2. 我如何构造一个新的geojson文件,以便将GeoTryCollection的坐标用于FeatureCollection(因为它仅适用于该类型)

我已经搜索了很多技巧1和这里的技巧2和这里的技巧3,但我找不到我的答案

谢谢你们的帮助

共有1个答案

邢飞雨
2023-03-14

我无法呈现Test.json文件,因此我使用mapshaper将其转换为我们可以实际读取的GeoJSON。然后在d3中为地理数据使用新的特长fitSize是令人惊奇的,它负责所有地理数据的居中和测量。

 #Test.json transformed
 {
     "type":"FeatureCollection",
     "features":[
     {
         "type":"Feature",
         "properties":{

         },
         "geometry":{
             "type":"Polygon",
             "coordinates":[

您的逻辑很好:)只需使用新的d3方法。

  d3.json(fichier, function(json) {
    var projection = d3.geoMercator().fitSize([w, h], json);
    var path = d3.geoPath().projection(projection);
    svg.selectAll('path')
      .data(json.features)
      .enter()
      .append('path')
      .attr('d', path)
      .style("fill", "red")
      .style("stroke-width", "1")
      .style("stroke", "black")
      .on("mouseover", function(d) {
        //console.log(d);
      });
  });

这是一个更新的plnkrhttp://plnkr.co/edit/MHsC4J2xFC0nrHXSZQGQ?p=preview

 类似资料:
  • 问题内容: 我有一个Map是一个到值列表的映射,但是我需要将其求逆,以便 变成 例如我有 我想看看 除了要遍历映射条目并创建set条目(如果不存在)并添加到列表等之外,Java 8中还有什么更简单的方法可以做到这一点?我一直认为这确实很明显,但我无法解决。 提前致谢 问题答案: 未经测试,但是您可以执行以下操作:

  • 使用,除了使用工作,我看到了使用gDebugger正确创建纹理的结果。有什么问题吗?

  • 问题内容: 我想展平一个将键关联到的列表的a ,而不会丢失键映射。我很好奇,就好像它是可能的,与这样做有用的和。 我们从这样的东西开始: 假设mapFrom填充在某处,如下所示: 我们还假设列表中的值是唯一的。 现在,我想“展开”它以获得第二张地图,例如: 我可以这样做(或使用,非常类似): 现在,假设我要使用lambda而不是嵌套循环。我可能会做这样的事情: 我也尝试了,但是我不认为这是正确的方

  • 问题内容: 我目前的理解非常模糊,我倾向于认为map是同步的,而flatMap是异步的,但是我真的无法解决它。 这是一个例子: 我有文件(a ),我想将其复制到服务器上的某些文件中。 本示例摘自一本书。 我可以将所有更改为to ,反之亦然,一切仍然正常。我不知道有什么区别。 问题答案: 用于同步,非阻塞,一对一转换 用于异步(非阻塞)1-to-N转换 区别在方法签名中可见: 取a 并返回a 取a

  • 问题内容: 我有以下情况:有一个对象列表-ProductData,其中包含几个字段: 还有API,它返回以下对象的列表: 但它会返回带有空计划名称字段的对象,因为在提取此对象期间不允许使用该名称。我需要通过外部参照将产品数据与RatingTableRow链接,以便将计划名称设置为RatingTableRow,因为稍后需要使用此对象,因此我创建了以下代码来做到这一点: 我知道Java文档说这不满足这

  • 我试图实现一个地图使用谷歌地图与离子。我遵循了这个链接中的编码,但我得到的只是一个空白屏幕,不知道我哪里出错了。请帮忙 这是控制器 这是html文件 请帮忙。