谷歌地图使用python

Pra*_*yak 0 python

我需要开发一个工具(例如:计算多边形区域)并将其与Google Maps集成.我不熟悉java.我可以使用python执行此操作吗?如果是,我该如何将我的代码与地图集成?

Ham*_*eza 7

您可以通过ipyleaflet包在IPython/Jupyter Notebook中使用OpenStreetMap而不是Google map 来实现.只需在Ipython Notebook(基于python的环境)中编写(或导入)您的脚本,然后在这里查看;

https://github.com/ellisonbg/ipyleaflet/tree/master/examples

你将能够绘制你想要的任何定义新图层等等......

这是一个例子:

打开Ipython Notebook并导入这些模块;

from ipyleaflet import (
     Map,
     Marker,
     TileLayer, ImageOverlay,
     Polyline, Polygon, Rectangle, Circle, CircleMarker,
     GeoJSON,
     DrawControl
)

m = Map(zoom=0)
dc = DrawControl()
def handle_draw(self, action, geo_json):
    print(action)
    print(geo_json)
dc.on_draw(handle_draw)
m.add_control(dc)
m
Run Code Online (Sandbox Code Playgroud)

地图将会出现

OpenStreetMap左侧有绘图工具

通过双击您感兴趣的点进行缩放,然后使用"绘制多边形"项绘制多边形.

在此输入图像描述

这只是一个建议,您可以使用其他方法来计算多边形的面积

import pyproj    
import shapely
import shapely.ops as ops
from shapely.geometry.polygon import Polygon
from functools import partial
my_poly = dc.last_draw['geometry']['coordinates'][0]
geom = Polygon(my_poly)
geom_area = ops.transform(
partial(
    pyproj.transform,
    pyproj.Proj(init='EPSG:4326'),
    pyproj.Proj(
        proj='aea',
        lat1=geom.bounds[1],
        lat2=geom.bounds[3])),
geom)
print (geom_area.area, 'square meters, which is equal to',geom_area.area/1000000, 'square kilometers')
Run Code Online (Sandbox Code Playgroud)

2320899322382.008平方米,相当于2320899.3223820077平方公里