目前在d3中,如果您要绘制一个geoJSON对象,则必须对其进行缩放并对其进行翻译,以使其达到所需大小并将其翻译以使其居中.这是一个非常乏味的反复试验,我想知道是否有人知道更好的方法来获得这些价值观?
所以,例如,如果我有这个代码
var path, vis, xy;
xy = d3.geo.mercator().scale(8500).translate([0, -1200]);
path = d3.geo.path().projection(xy);
vis = d3.select("#vis").append("svg:svg").attr("width", 960).attr("height", 600);
d3.json("../../data/ireland2.geojson", function(json) {
return vis.append("svg:g")
.attr("class", "tracts")
.selectAll("path")
.data(json.features).enter()
.append("svg:path")
.attr("d", path)
.attr("fill", "#85C3C0")
.attr("stroke", "#222");
});
Run Code Online (Sandbox Code Playgroud)
到底如何获得.scale(8500)和.translate([0,-1200]),而一点一点去?
GeoJSON和TopoJSON之间的区别是什么?我何时使用另一个?
GitHub上TopoJSON的描述意味着TopoJSON文件缩小了80%.那么为什么不一直只使用TopoJSON呢?
我正在尝试使用我存储在mongodb中的平面图来创建地图.如果我将JSON放入文件中,我可以使用它来调用它map.data.loadGeoJson('myfile.json')
但是,每次构建地图时我都不想保存文件,而是宁愿直接写一个对象.像这样的东西:
var tempObject = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"letter": "G",
"color": "blue",
"rank": "7",
"ascii": "71"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[123.61, -22.14], [122.38, -21.73], [121.06, -21.69], [119.66, -22.22], [119.00, -23.40],
[118.65, -24.76], [118.43, -26.07], [118.78, -27.56], [119.22, -28.57], [120.23, -29.49],
[121.77, -29.87], [123.57, -29.64], [124.45, -29.03], [124.71, -27.95], [124.80, -26.70],
[124.80, -25.60], [123.61, -25.64], [122.56, -25.64], [121.72, -25.72], [121.81, -26.62],
[121.86, -26.98], [122.60, -26.90], [123.57, -27.05], [123.57, -27.68], …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,需要使用d3.js显示国家和城市的地图.
实际上,D3支持GeoJson格式.通常,我猜,GeoJson格式是从其他格式转换而来的.
我找到了一些有这个GeoJson数据的地方:
http://mbostock.github.com/protovis/ex/countries.js
但是,这只是一个国家列表,我正在寻找一些服务或程序,使我能够设置ID,获取此格式,并将其转换为GeoJson,或更好地在GeoJson中获取它.
谢谢!!
MongoDB 2.4允许使用GeoJSON对象和一系列我想要使用的简洁函数和索引.
它希望GeoJSON对象以如下格式存储:
loc: {
type: 'Polygon',
coordinates: [[[-180.0, 10.0], [20.0, 90.0], [180.0, -5.0], [-30.0, -90.0]]]
}
Run Code Online (Sandbox Code Playgroud)
所以在Mongoose中,人们会认为模式定义如下:
loc: { type: 'string', coordinates: [[['number']]] }
Run Code Online (Sandbox Code Playgroud)
但目前存在两个问题:
有一个名为"type"的字段搞砸了Mongoose的模式解析,因为它允许在表单字段中定义字段:{type:,index:}等.
Mongoose不喜欢嵌套数组.
解决这个问题的一种方法是简单地使用mongoose.Schema.Types.Mixed,但我觉得必须有更好的方法!
我将一些坐标传给mongo进行地理搜索.如果坐标不相交(例如图8),它可以正常工作.但当两条线相交时,就会给出loop is not valid.有没有办法找到交叉点并将所有这些循环分开?
注意可能有很多.
编辑:我添加了示例查询和错误.请注意,我理解它为什么会发生,我只是想知道是否有一些已知的方法将这些循环分成单独的多边形(某些算法或Mongo内).
查询:
db.items.find({
"address.location": {
"$geoWithin": {
"$geometry": {
"type": "Polygon",
"coordinates": [[
[-97.209091, 49.905691],
[-97.206345, 49.918072],
[-97.178879, 49.919399],
[-97.165146, 49.907903],
[-97.164459, 49.892865],
[-97.180939, 49.889326],
[-97.197418, 49.895077],
[-97.200165, 49.902596],
[-97.203598, 49.919399],
[-97.216644, 49.928682],
[-97.244797, 49.927356],
[-97.255096, 49.913209],
[-97.209091, 49.905691]
]]
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
错误:
Error: error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "Loop is not valid: [
[ -97.209091, 49.905691 ]
[ -97.206345, 49.918072 ],
[ -97.17887899999999, 49.919399 …Run Code Online (Sandbox Code Playgroud) 我有一个传单地图,显示从GeoJSON渲染的公共艺术作品的点.在地图旁边,我创建了一个来自相同GeoJSON数据的片段列表,并且希望能够从地图外部的列表中单击某个项目,并在地图上显示相关标记的弹出窗口.
如何通过点击事件将项目列表链接到各自的标记?
我的map.js文件如下所示:
var map;
var pointsLayer;
$(document).ready(function () {
map = new L.Map('mapContainer');
var url = 'http://{s}.tiles.mapbox.com/v3/mapbox.mapbox-streets/{z}/{x}/{y}.png';
var copyright = 'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade';
var tileLayer = new L.TileLayer(url, {
attribution: copyright
});
var startPosition = new L.LatLng(41.883333, - 87.633333);
map.on('load', function (e) {
requestUpdatedPoints(e.target.getBounds())
});
map.setView(startPosition, 13).addLayer(tileLayer);
map.on('moveend', function (e) {
requestUpdatedPoints(e.target.getBounds())
})
});
function requestUpdatedPoints(bounds) {
$.ajax({
type: 'GET',
url: '/SeeAll',
dataType: 'json',
data: JSON.stringify(bounds),
contentType: 'application/json; …Run Code Online (Sandbox Code Playgroud) 我需要多个国家/地区的州,省和地区的geoJSON格式路径.最容易获得的geoJSON数据适用于美国各州和国家级边界,而不适用于国内/地区.此geoJSON将用于使用D3.js创建地理可视化.
我有一个包含大量多边形的geoJSON数据库(特别是人口普查区),我有很多长的纬度点.
我希望有一个有效的Python代码来识别给定坐标所在的人口普查区域,但到目前为止我的谷歌搜索还没有透露任何内容.
谢谢!
我一直在寻找答案,我无法弄明白.
