标签: geojson

如何使用Leaflet API从纬度和经度坐标中检索LayerPoint(X,Y)

如果我使用以下代码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 dictionary openstreetmap geojson leaflet

12
推荐指数
1
解决办法
7147
查看次数

如何使用javascript将geojson数组传递给数据表dyanamically

我想通过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)

html javascript datatable jquery geojson

12
推荐指数
1
解决办法
238
查看次数

在通过loadGeoJson()加载的功能上创建Infowindows

如果这是基本的,我道歉,但我的javascript知识非常有限.

我正在创建一个地图,使用ogr2​​ogr将我在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()任一个调用的函数中循环.

我知道这与我对缺乏理解范围,事件和对象数组有关,但我只是碰壁.

任何帮助,将不胜感激.

javascript geojson infowindow google-maps-api-3

11
推荐指数
1
解决办法
1万
查看次数

在folium中绘制带有地理数据框架的彩色多边形

我正试图在叶片中绘制雷达数据,我几乎就在那里.我按照这个例子(边界内的轮廓图数据(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)

python geojson folium

11
推荐指数
2
解决办法
2万
查看次数

如何为Map <String,Integer>定义JSON模式?

我有一个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)

schema json jsonschema geojson json-schema-validator

11
推荐指数
2
解决办法
1万
查看次数

缩放d3 v4地图以适合SVG(或根本不适合)

我试图让这个美国规模的地图变小.要么是我的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错误.谢谢你的帮助!

javascript svg geojson d3.js topojson

11
推荐指数
1
解决办法
2926
查看次数

具有多个孔的GeoJSON MultiPolygon

下面我有一个我期望的方法来创建一个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)

polygon geojson

11
推荐指数
2
解决办法
1万
查看次数

模拟单击传单地图项

有了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 &copy; 2011 OpenStreetMap contributors, Imagery &copy; 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)

javascript geojson leaflet

10
推荐指数
2
解决办法
1万
查看次数

Node.js/Javascript库来测试point是否在geojson multipolygon中

是否有一些node.js或javascript的库,它提供了一个函数来检查坐标是否在geojson多边形中?

我正在尝试创建一个小的HTTP API,告诉我哪些多边形(代表国家,县,城市等)包含给定的坐标.

我想我将在内存中保存所有多边形及其边界框的列表,然后首先检查每个多边形,如果它的边界框包含坐标.如果是,那么它将检查坐标是否在多面体本身.

我知道有一个名为"clipper"的库被移植到javascript,但似乎该库不提供简单的"pointInPolygon"函数,即使库本身非常强大.这个库仍然可以吗?

另外,我发现了另一个名为"geojson-js-utils"的库,但它似乎不支持多重多边形(至少它没有在那里提到)

我发现一些其他的库可以检查一个点是否在多边形中,但我不知道如何使用它们来检查一个点是否在多边形中.

任何提示?

javascript point-in-polygon geojson node.js

10
推荐指数
1
解决办法
2694
查看次数

将JSON加载到GeoDataFrame中

我有困难装载包含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)

python gis json geojson geopandas

10
推荐指数
2
解决办法
3503
查看次数