如果我使用以下代码LayerPoint从指定的Lat/Lng获取:
var latLng = new L.latLng(-37.81303878836989, 144.97421264648438);
var point = map.latLngToLayerPoint(latLng);
Run Code Online (Sandbox Code Playgroud)
输出如下:
o.Point
x: 86042
y: 77065
Run Code Online (Sandbox Code Playgroud)
然后,当我尝试使用以下URL访问图层磁贴时:
http://a.tile.osm.org/10/86042/77065.png
我得到404因为它是无效的X,Y.
现在,如果我使用以下代码:
map.on("click", function (e) {
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
我可以LayerPoint在纬度和经度旁边检索控制台.
latlng: o.LatLng
lat: -37.81303878836989
lng: 144.97421264648438
layerPoint: o.Point
x: 950
y: 303
Run Code Online (Sandbox Code Playgroud)
然后访问以下URL返回此图层磁贴:
http://a.tile.osm.org/10/950/303.png

问题是,它甚至看起来不是那个纬度经度的正确磁贴,也不是我的原始代码将lat lng转换为LayerPoint实际上首先返回一个有效的X,Y.
我很困惑为什么我得到这些结果.任何帮助将不胜感激.也许我做错了什么.
我不确定是否有另一种基于纬度和经度列表检索切片图层的方法?
我之后的原因是因为我希望能够为离线应用程序使用缓存的磁贴数据,而我所拥有的唯一数据是通过为客户端应用程序生成的GeoJSON有效负载的几何/坐标.
更新:
结束这个功能(感谢@scai).
根据这个链接.
var getSlippyTileLayerPoints = function (lat_deg, lng_deg, zoom) {
var x = (Math.floor((lng_deg + 180) / 360 * Math.pow(2, zoom)));
var …Run Code Online (Sandbox Code Playgroud) 我想通过javascript将一个geojson文件传递给动态创建的数据表,我无法识别文件中的列名..我试过这个..
我的代码是这样的,
<body>
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>fC.type</th>
<th>f.type</th>
<th>f.prop</th>
<th>f.geom.type</th>
<th>geometry.coordinates.0</th>
<th>geometry.coordinates.1</th>
</tr>
</thead>
</table>
</body>
$(document).ready(function() {
$('#example').dataTable( {
"ajax":"data/json_file.json",
"processing":true,
"columns": [
{ "mData": "type" },
{ "mData": "features.type" },
{ "mData": "features.properties" },
{ "mData": "geometry.type" },
{ "mData": "geometry.coordinates.0" },
{ "mData": "geometry.coordinates.1" }
]
});
});
Run Code Online (Sandbox Code Playgroud)
和geojson文件是
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "LineString",
"coordinates": [
[
40.078125,
57.136239319177434
],
[
91.7578125,
58.99531118795094
] …Run Code Online (Sandbox Code Playgroud) 如果这是基本的,我道歉,但我的javascript知识非常有限.
我正在创建一个地图,使用ogr2ogr将我在ArcGIS中创建的GeoJSON数据重新格式化为GeoJSON.我已经从地图加载并显示了我的GeoJSON文件中的点标记,我甚至还有一个styleFeature()功能,可以根据属性在功能上设置样式.
我遇到的问题是在点击点功能时尝试弹出信息窗口.
我已成功使用代码设置事件侦听器并使用单击的功能更新div的内容:
map.data.loadGeoJson('http://www.myurl.com/file.json');
map.data.setStyle(styleFeature);
map.data.addListener('click', function(event) {
var myHTML = event.feature.getProperty('Description');
document.getElementById('info-box').innerHTML = myHTML;
});
Run Code Online (Sandbox Code Playgroud)
我想要做的是有一个事件发起像这样的infowindow,这不起作用:
map.data.loadGeoJson('http://www.myurl.com/file.json');
map.data.setStyle(styleFeature);
map.data.addListener('click', function(event) {
var myHTML = event.feature.getProperty('Description');
var infowindow = new google.maps.InfoWindow({content: myHTML});
});
Run Code Online (Sandbox Code Playgroud)
我的数据集由超过一千个点组成,所以硬编码信息不起作用,我没有看到任何示例显示如何创建一个infowindows数组,因为功能在setStyle()任一个调用的函数中循环.
我知道这与我对缺乏理解范围,事件和对象数组有关,但我只是碰壁.
任何帮助,将不胜感激.
我正试图在叶片中绘制雷达数据,我几乎就在那里.我按照这个例子(边界内的轮廓图数据(lat,lon,value)并导出GeoJSON)将我的数据转换为GeoJson格式.
nb_class = 20
collec_poly = plt.contourf(lons,lats,np.array(poshdata), nb_class,alpha=0.5)
gdf = collec_to_gdf(collec_poly) # From link above
gdf.to_json()
colors = [p.get_facecolor().tolist()[0] for p in collec_poly.collections]
gdf['RGBA'] = colors
gdf
Run Code Online (Sandbox Code Playgroud)
这将输出两列:几何和RGBA.
RGBA geometry
0 [0.0, 0.0, 0.713903743316, 1.0] (POLYGON ((-71.57032079644679 42.2775236331535...
1 [0.0, 0.0960784313725, 1.0, 1.0] (POLYGON ((-71.56719970703125 42.2721176147460...
2 [0.0, 0.503921568627, 1.0, 1.0] (POLYGON ((-71.55678558349609 42.2721176147460...
3 [0.0, 0.896078431373, 0.970904490829, 1.0] (POLYGON ((-71.52552795410156 42.2849182620049...
4 [0.325743200506, 1.0, 0.641998734978, 1.0] (POLYGON ((-71.49427795410156 42.2939676156927...
5 [0.641998734978, 1.0, 0.325743200506, 1.0] (POLYGON ((-71.47344207763672 42.3003084448852... …Run Code Online (Sandbox Code Playgroud) 我有一个json:
{
"itemType": {"food":22,"electrical":2},
"itemCount":{"NA":211}
}
Run Code Online (Sandbox Code Playgroud)
这里的itemType和itemCount将是常见的,但不是它们内部的值(食物,NA,电子),它们将不断变化,但将采用以下格式:地图
如何为这种通用结构定义Json Schema?
我试过了 :
"itemCount":{
"type": "object"
"additionalProperties": {"string", "integer"}
}
Run Code Online (Sandbox Code Playgroud) 我试图让这个美国规模的地图变小.要么是我的SVG,要么是手动.
这是我最简单的代码:
function initializeMapDifferent(){
var svg = d3.select("#map").append("svg")
.attr("width", 1000)
.attr("height", 500);
d3.json("https://d3js.org/us-10m.v1.json", function (error, us){
svg.append("g")
.attr("class", "states")
.selectAll("path")
.data(topojson.feature(us, us.objects.states).features)
.enter().append("path")
.attr("fill", "gray")
.attr("d", d3.geoPath());
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西:
var path = d3.geoPath()
.projection(d3.geoConicConformal()
.parallels([33, 45])
.rotate([96, -39])
.fitSize([width, height], conus));
Run Code Online (Sandbox Code Playgroud)
但每次我在路径变量中添加任何东西时,我都会从D3的内部部分得到NAN错误.谢谢你的帮助!
下面我有一个我期望的方法来创建一个GeoJSON MultiPolygon对象,其中有一个多边形,有两个"洞".
当我使用服务http://geojson.io/来验证这个对象时,它会返回一个错误each element in a position must be a number并且它不会渲染,但是如果我删除了"holes"嵌套,删除其中一个然后它就可以了.
我正在寻找一种方法来描述MultiPolygon多边形可以有多个孔的位置.
我不是在代码中寻找一种创建带孔的多边形的方法.
我正在寻找一种方法来使用GeoJSON规范来表示具有多个孔的MultiPolygons.
{
"type": "MultiPolygon",
"coordinates": [
[
[
[
-73.98114904754641,
40.7470284264813
],
[
-73.98314135177611,
40.73416844413217
],
[
-74.00538969848634,
40.734314779027144
],
[
-74.00479214294432,
40.75027851544338
],
[
-73.98114904754641,
40.7470284264813
]
],
[
[
[
-73.99818643920906,
40.74550031602355
],
[
-74.00298643920905,
40.74550031602355
],
[
-74.00058643920897,
40.74810024102966
],
[
-73.99818643920906,
40.74550031602355
]
],
[
[
-73.98917421691903,
40.73646098717515
],
[
-73.99397421691901,
40.73646098717515
],
[ …Run Code Online (Sandbox Code Playgroud) 有了Leaflet Choropleth教程,我必须模拟特定地图区域的点击事件.例如:我必须有一个这样的函数clickOnMapItem(itemId)将点击由以下代码定义的地图区域
{"type":"Feature","id":"05","properties":{"name":"Arkansas","density":56.43},"geometry":{"type":"Polygon","coordinates":[...}
Run Code Online (Sandbox Code Playgroud)
其中"id":"05"是我需要点击的ID
我的其余代码如下例所示:
国家data.js:
var statesData = {"type":"FeatureCollection","features":[
{"type":"Feature","id":"01","properties":{"name":"Alabama","density":94.65},"geometry":{"type":"Polygon","coordinates":[[[-87.359 and so on
Run Code Online (Sandbox Code Playgroud)
HTML:
...标题无名
<!-- language:lang-html -->
<body>
<div id="map"></div>
<script src="dist/leaflet.js"></script>
<script type="text/javascript" src="us-states.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
var map = L.map('map').setView([37.8, -96], 4);
var cloudmade = L.tileLayer('http://{s}.tile.cloudmade.com/{key}/{styleId}/256/{z}/{x}/{y}.png', {
attribution: 'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade',
key: 'BC9A493B41014CAABB98F0471D759707',
styleId: 22677
}).addTo(map);
// control that shows state info on hover
var info = L.control();
info.onAdd = function (map) …Run Code Online (Sandbox Code Playgroud) 是否有一些node.js或javascript的库,它提供了一个函数来检查坐标是否在geojson多边形中?
我正在尝试创建一个小的HTTP API,告诉我哪些多边形(代表国家,县,城市等)包含给定的坐标.
我想我将在内存中保存所有多边形及其边界框的列表,然后首先检查每个多边形,如果它的边界框包含坐标.如果是,那么它将检查坐标是否在多面体本身.
我知道有一个名为"clipper"的库被移植到javascript,但似乎该库不提供简单的"pointInPolygon"函数,即使库本身非常强大.这个库仍然可以吗?
另外,我发现了另一个名为"geojson-js-utils"的库,但它似乎不支持多重多边形(至少它没有在那里提到)
我发现一些其他的库可以检查一个点是否在多边形中,但我不知道如何使用它们来检查一个点是否在多边形中.
任何提示?
我有困难装载包含GIS数据如下JSON(https://data.cityofnewyork.us/resource/5rqd-h5ci.json)成GeoDataFrame.
我尝试设置几何时,以下代码失败.
import requests
import geopandas as gpd
data = requests.get("https://data.cityofnewyork.us/resource/5rqd-h5ci.json")
gdf = gpd.GeoDataFrame(data.json())
gdf = gdf.set_geometry('the_geom')
gdf.head()
Run Code Online (Sandbox Code Playgroud) geojson ×10
javascript ×6
json ×2
leaflet ×2
python ×2
d3.js ×1
datatable ×1
dictionary ×1
folium ×1
geopandas ×1
gis ×1
html ×1
infowindow ×1
jquery ×1
jsonschema ×1
node.js ×1
polygon ×1
schema ×1
svg ×1
topojson ×1