python高德 查询县_Python获取amap高德地图

A.初始值,Python的字符是ascii,html是utf-8,转要转码

#__author__='ZHENGT'

# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding('utf-8') #Python默认ascii,需要转成utf-8

B.以静态图片形式展示图片

1)读取文件信息,这里用pandas库以dataframe形式.

2)高德地图添加点有50数量限制

3)将查询经纬度后的结果存为csv

import webbrowser

import pandas as pd

import urllib

import json

#http://lbs.amap.com/api/webservice/reference/staticmaps/#t6

#945ae54516979776ab3ee717012c24d4 #key

df = pd.read_table('WWT_Facility.txt') #读取目标文件

df['lon']=6.0 #插入lon列

df['lat']=7.0 #插入lat列

# print df.head(5) #显示开始5行

def getHtml(url): #

page = urllib.urlopen(url_amap) #访问网页

data = page.readline() #读入数据

data_dic = json.loads(data) #转换成python->字典

data_dic_geocodes = data_dic['geocodes'][0] #获取geocodes信息,也是以字典存储

data__dic_location = data_dic_geocodes['location'] # 获取location信息

location = str(data__dic_location).split(",") #处理locaiton成为List

#print location

return location #返回信息

def getStaticAmap(lonlat_str,str_city_center): #

# sh = '121.472644,31.231706' # 上海中心点

#高德地图-->静态地图API地址

url = r'http://restapi.amap.com/v3/staticmap?location=%s&zoom=10&size=1024*768&key='

url_1 = url % str_city_center #加入城市

url_amap=url_1+'&markers=mid,0xFF0000,A:'+lonlat_str #增加marker点

print url_amap #

webbrowser.open(url_amap) #打开

def formatLocation(str,location): #

#格式是lon1,lat1;lon2,lat2;lon3,lat3....

strTemp=','.join(location) #lon,lat

if len(str)==0: #判断是否是初始字符串

strLocation=strTemp

else: #不是初始字符串

strLocation=str+';'+strTemp #合并字符串

return strLocation #返回值

if __name__=='__main__': #

countdf=len(df) #df的行号,用以循环

lonlat_str='' #定义空白定符串

str_city_center = '121.472644,31.231706' #城市中心点lonlat

i=0 #初始化i

while i<15: #循环,高德地图有<50个点限制

df_1=df.ix[i,1] #名称

df_2=df.ix[i,2] #地址

df_3=df.ix[i,5] #处理量

amap = r'http://restapi.amap.com/v3/geocode/geo?address=%s&city=上海&output=JSON&key=945ae54516979776ab3ee717012c24d4'

url_amap=amap % df_2

getLocation=getHtml(url_amap) #获取数据,返回List[lon,lat]

df.ix[i,6]=getLocation[0] #lon信息

df.ix[i,7]=getLocation[1] #lat信息

lonlat_str=formatLocation(lonlat_str,getLocation) #定义marker点格式--->静态地图用

# print lonlat_str #显示marker点

# print df[i:i+1] #显示相关行数据

i+=1

# print df #观察一下数据

getStaticAmap(lonlat_str,str_city_center) #打开静态地图

df.to_csv('WWT_lonlat.csv', index=False, sep=',', encoding='utf-8') #存储为csv格式

结果如下:

C.以交互形式展式

1)mako库可以将python传递给本地HTML模版

2)AMAP的marker需要一个一个添加

3)需将产生的结果存为本地HTML,再用browser调用

4)经纬信息是下载好的,如需要可以调用另一script来进行获取

#似乎marker只能一个一个点添加,不能以数组形式添加

#http://lbs.amap.com/api/javascript-api/guide/quickstart/#t1

#https://wiki.python.org/moin/Templating

#http://www.jb51.net/article/84425.htm

#http://www.yeolar.com/note/2012/08/28/mako-syntax/

#Python打开HTML文件需要引用webbrowser

import webbrowser

from mako.template import Template #导入模板对象

import codecs #导入转义库

import pandas as pd

#经纬度已经在R+Python中下载过,这里就不重复下载

df_lonlat=pd.read_table(r'C:\Users\zhengt\Desktop\Study\Python\BeginningPython\BeginningPython\result.txt',sep=",",header=None)

df_lonlat.head(5) #查看前5行

def get_dic_lonlat(df): #

count_df=len(df) #df的行号,用以循环

i=0 #初始化变量

title=[] #初始化变量

lonlat=[] #初始化变量

dic={} #初始化变量

while i

title.append(df.ix[i,0]) #获取标题

lon=round(df.ix[i,3],4) #获取lon

lat=round(df.ix[i,4],4) #获取lat

lonlat.append(str(lon)+","+str(lat)) #lon,lat

# print title,lonlat

dic=dict(zip(title,lonlat)) #写入字典,title:lonlat

i=i+1

return dic #返回字典

def getInterAmap(str_city_center,dic_lonlat): #

# sh = '121.472644,31.231706' # 上海中心点

#高德地图-->静态地图API地址

url = r'C:\Users\zhengt\Desktop\Study\Python\BeginningPython\BeginningPython\amap_with_point.html'

tmple=Template(filename=url,input_encoding='utf-8') #根据amap构建模板对象

result=tmple.render(Locat=str_city_center,

Pt=dic_lonlat) #将location传递给mako的template

# result=tmple.render(Locat='121.74,31.24') #test only

print result #显示结果

f=codecs.open("text.html",'w',"utf-8") #另存为文件

f.write(result) #写入信息

f.close() #关闭文件

url_1=r'text.html' #文件名

webbrowser.open(url_1) #打开本地html

if __name__=='__main__': #

dic_lonlat=get_dic_lonlat(df_lonlat) #返回字典

for key,value in dic_lonlat.items():

print key,'-->',value #观察字典内容

str_city_center = '121.47,31.23' #城市中心点lonlat

result=getInterAmap(str_city_center, dic_lonlat) #获取地图

结果如下:

HTML模版如下:

body,html,#container{

height: 100%;

margin: 0px;

font: 12px Helvetica, 'Hiragino Sans GB', 'Microsoft Yahei', '微软雅黑', Arial;

}

var mapObj = new AMap.Map('container',{

resizeEnable: true,

zoom: 10,

center:[${Locat}]

});

% for key in Pt.keys():

var marker = new AMap.Marker({

position:[${Pt[key]}],

title:"${key}",

map: mapObj

})

% endfor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值