用叶绘制

时间:2019-07-17 10:49:15

标签: python json folium

任务是为莫斯科制作一个地址受欢迎度地图。基本上,它应该是这样的:

https://nbviewer.jupyter.org/github/python-visualization/folium/blob/master/examples/GeoJSON_and_choropleth.ipynb

对于我的地图,我使用公共geojson:http://gis-lab.info/qa/moscow-atd.html

我唯一的数据-点坐标,并且没有关于它们所属区域的信息。

问题1: 如果该点属于该点,我是否必须手动计算该点,还是有更有效的方法呢?

问题2: 如果没有办法使此操作更容易,那么如何从geojson文件(上面的链接)中获取每个区域的所有坐标?

2 个答案:

答案 0 :(得分:0)

由于@BobHaffner,我尝试使用geopandas解决问题。

这是我的步骤:

  1. 我使用此链接click下载了莫斯科的shape-files
  2. 从包含xylatitudelogitude)坐标的元组列表中,我创建Points (docs)的列表
  3. 假设在第一个链接的数据框中有多边形,我可以编写一个简单的循环来检查Point是否在该多边形内。有关详细信息,请阅读this

答案 1 :(得分:0)

- name: Login to WLC and Return webpage
  hosts: WLC
  connection: local
  gather_facts: flase


  tasks:

    - name: Login to Cisco WLC using web GUI
      uri:
        url: https://10.23.201.2
        method: GET
        force_basic_auth: yes
        url_username: username
        url_password: password
        validate_certs: False
        return_content: yes
        register: login
    - debug: var=login.stdout

使用geopandas读取莫斯科地区的形状文件

import pandas as pd
import numpy as np
import geopandas as gpd
from shapely.geometry import Point

构建模拟用户数据集

districts = gpd.read_file('mo-shape/mo.shp')

根据用户数据创建Point对象

moscow = [55.7, 37.6]

data = (
    np.random.normal(size=(100, 2)) *
    np.array([[.25, .25]]) +
    np.array([moscow])
)
my_df = pd.DataFrame(data, columns=['lat', 'lon'])
my_df['pop'] = np.random.randint(500, 100000, size=len(data))

然后使用默认值'inner'进行联接

geom = [Point(x, y) for x,y in zip(my_df['lon'], my_df['lat'])]

# and a geopandas dataframe using the same crs from the shape file
my_gdf = gpd.GeoDataFrame(my_df, geometry=geom)
my_gdf.crs = districts.crs