TopoJSON是对拓扑进行编码的GeoJSON的扩展。 TopoJSON消除了冗余,提供了比使用GeoJSON更紧凑的几何表示;典型的TopoJSON文件比其GeoJSON等效文件小80%。此外,TopoJSON还有助于使用拓扑的应用程序,例如拓扑保留形状简化,自动地图着色和制图。
我的纽约 d3 地图将无法加载。有人可以帮忙吗? 这是我的代码: 身体 { 字体:12px 无衬线; } 小路 { 圣...</desc> <question vote="1"> <p>我的纽约 d3 地图将无法加载。有人可以帮忙吗?</p> <p>这是我的代码:</p> <pre><code><!DOCTYPE html> <meta charset="utf-8"> <style> body { font: 12px sans-serif; } path { stroke-width: 1.75px; stroke: #531b93; fill: #919191; cursor: pointer; } path:hover, path.highlighted { fill: #0096ff; } div.tooltip { position: absolute; background-color: white; border: 1px solid black; color: black; font-weight: bold; padding: 4px 8px; display: none; } </style> <body> <script src="http://d3js.org/d3.v3.min.js"></script> <script> //Map dimensions (in pixels) var width = 600, height = 600; //Map projection var projection = d3.geo.mercator() .scale(58722.369041340586) .center([-73.97768078496284,40.705833704252484]) //projection center .translate([width/2,height/2]) //translate to center the map in view //Generate paths based on projection var path = d3.geo.path() .projection(projection); //Create an SVG var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height); //Group for the map features var features = svg.append("g") .attr("class","features"); //Create zoom/pan listener //Change [1,Infinity] to adjust the min/max zoom scale var zoom = d3.behavior.zoom() .scaleExtent([1, Infinity]) .on("zoom",zoomed); svg.call(zoom); //Create a tooltip, hidden at the start var tooltip = d3.select("body").append("div").attr("class","tooltip"); d3.json("NYC_MapInfos.geojson",function(error,geodata) { if (error) return console.log(error); //unknown error, check the console //Create a path for each map feature in the data features.selectAll("path") .data(geodata.features) .enter() .append("path") .attr("d",path) .on("mouseover",showTooltip) .on("mousemove",moveTooltip) .on("mouseout",hideTooltip) .on("click",clicked); }); // Add optional onClick events for features here // d.properties contains the attributes (e.g. d.properties.name, d.properties.population) function clicked(d,i) { } //Update map on zoom/pan function zoomed() { features.attr("transform", "translate(" + zoom.translate() + ")scale(" + zoom.scale() + ")") .selectAll("path").style("stroke-width", 1.75 / zoom.scale() + "px" ); } //Position of the tooltip relative to the cursor var tooltipOffset = {x: 5, y: -25}; //Create a tooltip, hidden at the start function showTooltip(d) { moveTooltip(); tooltip.style("display","block") .text(d.properties.PO_NAME); } //Move the tooltip to track the mouse function moveTooltip() { tooltip.style("top",(d3.event.pageY+tooltipOffset.y)+"px") .style("left",(d3.event.pageX+tooltipOffset.x)+"px"); } //Create a tooltip, hidden at the start function hideTooltip() { tooltip.style("display","none"); } </script> </code></pre> <p>这是 geojson 文件: <a href="http://data.beta.nyc//dataset/3bf5fb73-edb5-4b05-bb29-7c95f4a727fc/resource/6df127b1-6d04-4bb7-b983-07402a2c3f90/download/f4129d9aa6dd4281bc98d0f701629b76nyczipcodetabulationareas.geojson" rel="nofollow">http://data.beta.nyc//dataset/3bf5fb73-edb5-4b05-bb29-7c95f4a727fc/resource/6df127b1-6d04-4bb7 -b983-07402a2c3f90/下载/f4129d9aa6dd4281bc98d0f701629b76nyczipcodetabulationareas.geojson</a></p> </question> <answer tick="true" vote="0"> <p>您可以尝试使用 <a href="https://github.com/gagan-bansal/geojson2svg" rel="nofollow noreferrer">geojson2svg</a> 模块使用 geojson 数据创建 SVG 地图。由于这只是简单的 JavaScript,因此您将拥有更多控制权。这是你的例子</p> <p>您的 html 页面 (index.html):</p> <pre><code><html> <head> <link rel="stylesheet" href="./map.css"/> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/geojson2svg/1.0.3/geojson2svg.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script> <script type="text/javascript" src="https://cdn.rawgit.com/geosquare/reproject-spherical-mercator/v0.1.3/dist/reproject-spherical-mercator.min.js"></script> <script type="text/javascript" src="https://cdn.rawgit.com/geosquare/geojson-bbox/master/dist/geojson-bbox.min.js"></script> </head> <body> <h2>Example of New York postal code map created with geojson2svg</h2> <div id="mapArea" style="width:600px;height:600px;"> <svg id="map" xmlns="http://www.w3.org/2000/svg" width="600" height="600" x="0" y="0" > </svg> <div class="tooltip" ></div> </div> <script type="text/javascript" src="./main.js"></script> </body> </code></pre> <p>Javascript代码(main.js):</p> <pre><code>var dataURI = "http://data.beta.nyc//dataset/3bf5fb73-edb5-4b05-bb29-7c95f4a727fc/resource/6df127b1-6d04-4bb7-b983-07402a2c3f90/download/f4129d9aa6dd4281bc98d0f701629b76nyczipcodetabulationareas.geojson"; $.get(dataURI,drawGeoJSON); $('#map').on('mouseover','path',function(ev) { console.log(ev.target.feature.properties.postalCode); var tooltip = document.querySelector('.tooltip'); tooltip.style.top = ev.pageY - 30; tooltip.style.left = ev.pageX + 5; tooltip.style.display = 'block'; tooltip.innerHTML = ev.target.feature.properties.PO_NAME; }); $('#map').on('mouseout','path',function(ev) { var tooltip = document.querySelector('.tooltip'); tooltip.style.display = 'none'; }); function drawGeoJSON(geojson) { // covert wgs84 data to Web Mercator projection var geojsonMerc = reproject(geojson); // reproject: https://github.com/geosquare/reproject-spherical-mercator var extent = bbox(geojsonMerc); // bbox: https://github.com/geosquare/geojson-bbox var mapExtent = { left: extent[0], bottom: extent[1], right: extent[2], top: extent[3] }; var svgMap = document.getElementById('map'); // geojson2svg: https://github.com/gagan-bansal/geojson2svg var convertor = geojson2svg( { viewportSize: {width:600,height:600}, mapExtent: mapExtent, attributes: { 'vector-effect':'non-scaling-stroke' }, explode: false } ); geojsonMerc.features.forEach(function(f) { var svgStr = convertor.convert(f,{attributes: {id: 'pc-'+f.properties.OBJECTID}}); var svg = parseSVG(svgStr); svgMap.appendChild(parseSVG(svgStr)); var svgEle = svgMap.querySelector('#' + 'pc-'+f.properties.OBJECTID); svgEle.feature = f; }); } //parseSVG from http://stackoverflow.com/questions/3642035/jquerys-append-not-working-with-svg-element function parseSVG(s) { var div= document.createElementNS('http://www.w3.org/1999/xhtml', 'div'); div.innerHTML= '<svg xmlns="http://www.w3.org/2000/svg">'+s+'</svg>'; var frag= document.createDocumentFragment(); while (div.firstChild.firstChild) frag.appendChild(div.firstChild.firstChild); return frag; } </code></pre> <p>和CSS(map.css):</p> <pre><code>body { font: 12px sans-serif; } path { stroke-width: 1px; stroke: #531b93; fill: #919191; cursor: pointer; } path:hover, path.highlighted { fill: #0096ff; } div.tooltip { position: absolute; background-color: white; border: 1px solid black; color: black; font-weight: bold; padding: 4px 8px; display: none; } </code></pre> <p>如需提前使用,请查看<a href="https://maps-on-blackboard.github.io/tag/geojson2svg/" rel="nofollow noreferrer">此博客</a></p> </answer> </body></html>
我正在使用topojson地图数据。 本质上,我希望根据 data_count 值看到每个区域高度的海拔。但我看到所有区域的高度相同。 get_elevation 代替
通过 R (Markdown) 中的以下最小示例,可以在两个不同的 topojson 属性之间进行选择,并根据选择反应性地绘制不同的传单分区统计图...
我正在使用 D3.js 绘制越南地图。我从 URL(在代码中)获取 GeoJSON 数据,我遵循了很多说明,从转换为 TopoJSON(为了紧凑尺寸)然后转换回
如何将Revit Room导入Power BI报告?或者从 Revit 房间创建 topojson/geojson 文件?
我正在尝试将数据从 Revit 房间导入交互式 Power BI 报告。我想将房间几何形状带入 PBI 报告并将其与外部数据表链接起来,创建
嗨,我正在创建 React 应用程序,我试图在其中使用 D3 制作世界地图。我希望当用户将鼠标悬停在特定国家/地区时,该国家/地区路径的质心上会出现圆圈,但对于某些国家/地区,例如 &
OpenLayers:缩放级别裁剪 VectorTile 图层 - 如何修复?
我想使用 TopoJSON 数据作为 OpenLayers 地图的 VectorTile 图层。当地图的缩放级别设置为 3 或更低时,将显示完整的 VectorTile 图层,但在缩放级别为 4 或更高时,
我目前正在处理地理空间数据,遇到了需要将数据从 ArcGIS JSON 格式转换为 GeoJSON 格式的情况。我了解 GDAL,特别是它
我正在尝试使用 d3 绘制地图,并且我正在从 json 文件中提取数据,但它不起作用。下面是我的 script.js
let CountyURL = 'https://raw.githubusercontent.com/deldersveld/topojson/master/countries/nigeria/nigeria-states.json' 让县数据 让画布 = d3.select('#canvas') 让工具提示 = d3.select('#to...
我正在尝试从 sf 对象创建一个格式正确的 topoJSON 列表。 读取有效的 topoJSON 文件时会起作用的是: 萨<- jsonlite::read_json("https://raw.
使用 d3.js 和 React 为 Albers US Choropleth Map 渲染正确的视觉效果
我试图弄清楚我的代码出了什么问题,因为当我尝试为每个元素获取一个 colorScale 时,除了单一颜色的大正方形之外我无法生成任何其他东西......
我制作了以下TopoJSON文件:https://gofile.io/d/CKBGhF我想用基本的D3.js脚本在浏览器中查看它。从https://bost.ocks.org/mike/map/中,我找到了有关...
我如何将数据绑定到html对象,条件是html数据集和对象键值是否使用javascript匹配?
我正在尝试将数据绑定到svg映射。但是,我用来创建地图的TopoJSON文件与数据之间存在一些不一致之处。最大的障碍是某些属性...
我已经在D3中制作了地图,并且之前已经有条件地在id和属性上分配了颜色。在这种情况下,我试图根据名称中是否存在特定单词来有条件地进行着色。 ...
我是d3和topojson的新手。尝试在离子角度应用程序上渲染地图。似乎画布已正确填充,但形状不可见:(可以请人帮忙吗?这是...
请原谅天真的问题;我是Typescript的新手。在javascript中,我可以使用topojson.mesh创建这样的网格对象:从“ ./counties-albers-10m.json”导入我们topojson.mesh(us,us ....
我正在尝试在d3.js中制作一个SVG地图,以显示所有美国县。当您单击状态时,它会将viewBox转换为该状态,并根据其在地球上的位置对其进行旋转,因此它不是...
如何获取topojson文件的svg路径而不将其添加到d3.js中的DOM?
我有一个特殊情况,我不想将我的topojson文件的生成路径添加到DOM,而只是获取生成的d属性(SVG路径)。所以我通常会做类似...
我已经尝试根据两个坐标对(用作起点和着陆点)为单个飞行设置动画。但是我陷入了错误:错误:属性d:预期的数字,“ ...”。 ...
Datamap错误:“未捕获的TypeError:无法读取未定义的属性'equirectangular'”
//您好,我正在尝试使用Datamaps,D3.js和Topojson创建世界地图。以下代码摘录自我的index.html文件,该文件理论上应按照...