百度地图全国poi数据(地图数据)问题
- 格式:doc
- 大小:131.50 KB
- 文档页数:2
poi的工作原理及应用一、工作原理poi是一种在地理信息系统(GIS)中常见的技术,用于描述和标记地理位置,它的工作原理可以概括为以下几个步骤:1.数据采集:poi的工作原理首先需要进行数据采集,主要包括位置坐标、属性信息等。
这些数据可以通过卫星定位系统(如GPS)或地理信息数据库来获取。
2.地理编码:将采集的数据进行地理编码处理,将位置坐标与地图上的具体位置相匹配。
通过地理编码,可以准确地将poi标记在地图上。
3.数据存储:poi的数据通常存储在地理信息数据库中,以便后续的查询和分析。
这些数据可以按照不同的分类进行存储,如餐厅、酒店、景点等。
4.数据分析:poi的工作原理还涉及到数据分析,通过对poi数据的分析可以获得更多的有用信息,如热门地点、用户偏好等。
这些信息可以帮助用户做出更好的决策。
二、应用场景poi的工作原理在许多领域都有广泛的应用,以下是一些常见的应用场景:1.导航系统:导航系统是poi的一个重要应用场景,它可以根据用户的位置,为用户提供周边的poi信息,并规划最优的路径。
导航系统在汽车导航、手机导航等方面都有广泛的应用。
2.位置服务:随着移动互联网的快速发展,位置服务成为了一个热门领域。
通过使用poi的工作原理,用户可以方便地找到附近的餐厅、酒店、商店等信息。
这些信息可以帮助用户更好地了解周边环境。
3.旅游指南:对于旅游者来说,poi的工作原理可以提供许多有用的信息,如景点介绍、交通指南、住宿推荐等。
旅游指南可以让用户更好地安排行程,提高旅游体验。
4.市场分析:对于商家来说,poi的工作原理也具有重要的意义,通过分析用户的位置和偏好,可以了解用户的行为特征。
这些信息可以帮助商家做出更好的市场决策,提高销售效果。
5.城市规划:城市规划是一个复杂的过程,其中准确的地理信息起到了至关重要的作用。
通过使用poi的工作原理,可以更好地分析城市的地理特征,提高规划的科学性和可行性。
三、总结poi的工作原理是一个涉及地理信息采集、编码、存储和分析的过程。
POI(Point of Interest)数据是地理信息系统中的一种重要数据类型,它代表着特定地点的地理位置信息,如商店、餐馆、景点等。
在地理学研究中,POI数据具有广泛的应用,可以用于城市规划、交通分析、地理信息服务等领域。
本文将探讨POI数据在地理学研究中的典型应用。
一、城市规划POI数据可以为城市规划提供重要的参考信息。
通过分析城市中不同类型POI的分布情况,可以了解到人口密集区域、商业繁华地带、文化休闲区域等,这些信息对城市规划和土地利用具有重要意义。
根据商业区POI的分布情况,可以合理规划商业用地的分布,避免同质化竞争。
通过POI数据还可以进行城市设施规划,如学校、医院、公园等的布局和建设,为城市的可持续发展提供支持。
二、交通分析在交通领域,POI数据可以用于交通分析和规划。
通过分析交通设施、交通枢纽、停车场等POI的分布情况,可以评估城市交通网络的状况,找出交通瓶颈和瓶颈区域,为交通规划和交通优化提供决策支持。
另外,利用POI数据还可以进行出行规划和路径规划,提供出行建议和导航服务,为市民和游客提供出行便利。
三、地理信息服务POI数据在地理信息服务中有着重要的应用价值。
通过POI数据,可以为用户提供位置信息检索、周边信息推荐、导航服务等功能。
用户可以通过POI数据查询周边的餐馆、景点、酒店等信息,获取周边环境的实时信息。
另外,地理信息服务还可以通过POI数据提供定制化服务,根据用户需求为其推荐特定类型的POI点,满足用户个性化需求。
POI数据在地理学研究中具有广泛的应用前景,可以为城市规划、交通分析、地理信息服务等领域提供重要支持。
随着地理信息技术的不断发展和创新,相信POI数据在地理学研究中的应用将会得到进一步拓展和深化。
四、旅游规划POI数据在旅游规划中扮演着不可或缺的角色。
通过分析旅游景点、酒店、景区等POI的分布情况,可以帮助规划旅游线路和景点推荐,为旅行者提供更加个性化和便捷的旅游体验。
poi用例-回复POI(Point of Interest)是指地理空间中一个与众不同、值得关注的地点或区域。
它可以是旅游景点、餐馆、商店、博物馆等各种各样的场所。
POI 在现代社会中有着广泛的应用,可以帮助人们找到有趣的地方、规划旅行路线、推广商业活动等。
下面将以POI的应用场景为主题,一步一步回答相关问题。
一、什么是POI?POI即Point of Interest,是地理空间中的一个具体位置,它代表了一个有吸引力、有特色的地方,通常是人们在旅行或生活中感兴趣的地点。
POI 可以是景点、商店、饭店、博物馆等各种各样的地点,具体的POI包括了其地理坐标、名称、地址、特征描述等信息。
二、POI的应用场景有哪些?1. 旅游规划:POI可以帮助人们找到旅游景点、美食街、购物中心等,帮助他们规划旅行路线,提供周边设施信息。
2. 商业推广:商家可以通过POI将自己的店铺、餐厅等标记在地图上,吸引潜在客户,提高知名度和曝光率。
3. 地图导航:POI是地图导航的基础信息,通过POI人们可以找到目的地,规划最佳行车路线,提供导航服务。
4. 城市规划:政府可以利用POI数据对城市的交通、商业、文化等进行分析和规划,提高城市的发展和管理水平。
5. 社区服务:POI也可以帮助人们找到医院、学校、银行等公共服务设施,提供便利的生活服务。
三、POI如何通过技术实现?1. 地理定位技术:利用GPS、基站定位等技术可以获取用户的地理坐标信息,确定用户所在位置。
2. 数据采集与整理:通过爬虫技术或人工收集各类POI的地理位置、名称、地址等信息,并进行整理、分类、归纳。
3. 地图数据存储与管理:将采集到的POI数据存储到数据库中,并提供相应的接口供应用程序调用。
4. 数据展示与查询:通过地图应用程序、Web端或移动端应用将POI在地图上显示,并提供搜索和查询功能。
5. 算法与推荐系统:通过算法分析用户的兴趣、行为等,为用户推荐附近的POI,提高用户体验。
功能简介本方案用于获取百度地图上的POI(位置兴趣点)以及AOI(区域兴趣点)信息,包括经度维度(百度坐标系)、地点(区域)名称、地点特征以及区域范围等信息,将数据存入数据库并保持持续更新。
能力说明多种爬取手段结合采用“百度地图URL爬取”和“百度地图API调用”两种方式结合,尽可能的覆盖全量数据,将数据丢失降至最低。
当采取百度地图URL爬取的时候,由于百度地图服务器端的限制,一个区县范围内单个关键字最多返回750条记录,大于750部分将被丢弃,无法获取。
这个时候就需要将区县划分成一定大小的地理网格,只要网格选取的足够合适,那么单个网格范围内返回的数据量将不会超过最大值,将数据损失尽量降低。
网格划分规则:D(记录数差值)= 实际返回总记录数– 750(记录返回上限)如果1=<D<=400,则划分为5×5个相同大小的正方形如果401=<D<=1000,则划分为6×6个相同大小的正方形如果1001=<D<=2000,则划分为8×8个相同大小的正方形如果2001=<D<=5000,则划分为10×10个相同大小的正方形如果5001=<D,则划分为15×15个相同大小的正方形支持断点续传每次任务执行之前,会生成全局执行计划,并按照执行计划逐步执行,当执行过程中由于程序原因或者外界原因程序退出中断后,如果启动时间与上次执行时间之差不超过24小时,再次启动程序将按照原执行计划顺序执行;如果超过24小时,将重新生成执行计划并执行。
多进程+多线程为了保证数据更新的效率,采取多进程结合多线程的方式执行。
首先按地市生成11个定时任务,每个任务中按区县再分成多个线程并行执行。
目前平均每天全量更新数据的时间大约在3小时左右。
数据持续更新每天定时更新全量数据,保证数据与百度地图的一致性,实现新增数据的录入以及旧数据的剔除。
百度地图API爬取不同类型POI的详细数据⼀、相关概念查询某个范围内的所有POI参数介绍:page_size:单次查询返回的POI的数量,最⼤值为20page_num:查找的POI数量超过20时,会分页显⽰;⽐如60个POI就会分3页;此时,page_num=1/2/3会先显⽰全部的数据;当page_num=4时,第4页的结果集⼤⼩为0;scope:1为默认值;2会显⽰详细数据region:检索的⾏政区域URL链接:查询结果⽰例:"status":0,"message":"ok","total":2,"result_type":"poi_type","results":[{"name":"红螺寺","location":{"lat":40.390454,"lng":116.632411},"address":"北京市怀柔区红螺东路2号","province":"北京市","city":"北京市","area":"怀柔区","street_id":"","telephone":"(010)60681175,(010)60681639","detail":1,"uid":"605884e7c61e3573871541a3","detail_info":{"tag":"旅游景点;⽂物古迹","navi_location":{"lng":116.63176774842,"lat":40.37846005246},"type":"scope","detail_url":"/place/detail?uid=605884e7c61e3573871541a3&output=html&source=placeapi_v2","overall_rating":"4.3","comment_num":"200","children":[]}},{"name":"卧佛寺","location":{"lat":40.013776,"lng":116.213915},"address":"北京市海淀区卧佛寺路北京植物园内","province":"北京市","city":"北京市","area":"海淀区","street_id":"934b3dbf0a8d977b8b2fb5c0","detail":1,"uid":"934b3dbf0a8d977b8b2fb5c0","detail_info":{"tag":"旅游景点;⽂物古迹","navi_location":{"lng":116.21389548337,"lat":40.011540367963},"type":"scope","detail_url":"/place/detail?uid=934b3dbf0a8d977b8b2fb5c0&output=html&source=placeapi_v2","overall_rating":"4.7","image_num":"38","comment_num":"74","children":[]}}]查询某个POI的详细数据参数介绍:uid:某个POI对应的唯⼀的标识(通过范围查询获取到的)URL链接:查询结果⽰例:{"status":0,"message":"ok","result":{"uid":"605884e7c61e3573871541a3","street_id":"","name":"红螺寺","location":{"lng":116.63241097199,"lat":40.390454021402},"address":"北京市怀柔区红螺东路2号","province":"北京市","city":"北京市","area":"怀柔区","telephone":"(010)60681175,(010)60681639","detail_info":{"tag":"旅游景点;⽂物古迹","navi_location":{"lng":116.63176778525,"lat":40.378460018453},"detail_url":"/place/detail?uid=605884e7c61e3573871541a3&output=html&source=placeapi_v2","type":"scope","price":"¥54元","overall_rating":"4.3","image_num":"133","comment_num":"200","scope_type":"古迹","scope_grade":"AAAA","content_tag":"适合亲⼦;登⼭;礼佛祈福;赏红叶;适合拍照;⽇出;适合跑步;银杏;情侣约会;⾹⽕旺;免费项⽬;收费合理;空⽓清新;绿植繁茂;位置优越;景⾊优美;⼈⽓旺;景区⼤;⽓势宏⼤;环境不错;玩的开⼼;休闲好去处;值得游玩;建筑风格独特 },"detail":1}}⼆、相关链接百度地图API的POI分类申请akPOI检索相关介绍三、功能模块范围查询获取POI数据#将查询到的poi数据存⼊数据库def insertPOIData(name_list,ak,cursor):#总共查询到了多少对象total = 0#不重复的向数据库中写⼊的数据条数inserttotal = 0for i in name_list:#ecxel表格数据判空if i == '':break#j的范围从0开始;上限不⼀样for j in range(0, 10):time.sleep(3)url = getUrlByName(i, ak, j)print(url)html = requests.get(url)# print(type(html)) response类型data = html.json()# print(type(data)) dict类型print(data)#status状态码为0表⽰获取正常if data['status'] == 0:#判断获取的数量,为0表⽰查询不到该类型的对象if data['total'] == 0:breaktotal = total + data['total']if 'results' in data:for item in data['results']: # ⼀次返回的results中有20条数据# print(item)name = item['name']if isExist(cursor, item['uid']):print(f'{name}已经存在')#跳出循环,判断results中的下⼀个itemcontinueinsert = "insert into poidatas(tag,uid,lat,lng,name,address,province,city,area) values ('%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (i, item['uid'], str(item['location']['lat']), str(item['location']['lng']), item['name'],item['address'], item['province'], item['city'], item['area']) # 字符串类型的数据插⼊要加单引号if cursor.execute(insert):inserttotal = inserttotal + 1if 'overall_rating' in item['detail_info']:update = "update poidatas set overall_rating ='%s' where uid = '%s'" % (item['detail_info']['overall_rating'], item['uid'])cursor.execute(update)if 'distance' in item['detail_info']:update = "update poidatas set distance ='%s' where uid = '%s'" % (item['detail_info']['distance'], item['uid'])cursor.execute(update)if 'comment_num' in item['detail_info']:update = "update poidatas set comment_num ='%s' where uid = '%s'" % (item['detail_info']['comment_num'], item['uid'])cursor.execute(update)if 'price' in item['detail_info']:update = "update poidatas set price ='%s' where uid = '%s'" % (item['detail_info']['price'], item['uid'])cursor.execute(update)if 'result' in data: #还需要对只有⼀个返回结果的情况进⾏判断#区别就是这⾥不能⽤for循环item = data['result']# print(item)db = pymysql.connect(host="localhost", user="root", password="root", database="poi")cursor = db.cursor()name = item['name']if isExist(cursor, item['uid']):print(f'{name}已经存在')exit()insert = "insert into poidatas(tag,uid,lat,lng,name,address,province,city,area) values ('%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (i, item['uid'], str(item['location']['lat']), str(item['location']['lng']), item['name'],item['address'], item['province'], item['city'], item['area']) # 字符串类型的数据插⼊要加单引号if cursor.execute(insert):inserttotal = inserttotal + 1if 'overall_rating' in item['detail_info']:update = "update poidatas set overall_rating ='%s' where uid = '%s'" % (item['detail_info']['overall_rating'], item['uid'])cursor.execute(update)if 'distance' in item['detail_info']:update = "update poidatas set distance ='%s' where uid = '%s'" % (item['detail_info']['distance'], item['uid'])cursor.execute(update)if 'comment_num' in item['detail_info']:update = "update poidatas set comment_num ='%s' where uid = '%s'" % (item['detail_info']['comment_num'], item['uid'])cursor.execute(update)if 'price' in item['detail_info']:update = "update poidatas set price ='%s' where uid = '%s'" % (item['detail_info']['price'], item['uid'])cursor.execute(update)print('总共查找到的POI数量为: ')print(total)print('插⼊数据库的POI数量为: ')print(inserttotal)根据uid查询POI详细数据#通过uid查询更详细的数据并存⼊数据库def updateDetailInfo(ak,cursor):selectsql = 'SELECT uid FROM poidatas'cursor.execute(selectsql)result = cursor.fetchall()for row in result:uid = row[0]url2 = '/place/v2/detail?uid=%s&output=json&scope=2&ak=%s' %(uid,ak)print(url2)time.sleep(3)html=requests.get(url2)data=html.json()print(data)if data['status']==0:if 'result' in data:#print(data['result'])#result集合⼤⼩为1,这⾥不能使⽤for循环item = data['result']if 'shop_hours' in item['detail_info']:update = "update poidatas set shop_hours ='%s' where uid = '%s'" % (item['detail_info']['shop_hours'],item['uid'])print(update)cursor.execute(update)if 'detail_url' in item['detail_info']:update = "update poidatas set detail_url ='%s' where uid = '%s'" % (item['detail_info']['detail_url'],item['uid'])print(update)cursor.execute(update)if 'image_num' in item['detail_info']:update = "update poidatas set image_num ='%s' where uid = '%s'" % (item['detail_info']['image_num'],item['uid'])print(update)cursor.execute(update)if 'service_rating' in item['detail_info']:update = "update poidatas set service_rating ='%s' where uid = '%s'" % (item['detail_info']['service_rating'],item['uid'])print(update)cursor.execute(update)if 'environment_rating' in item['detail_info']:update = "update poidatas set environment_rating ='%s' where uid = '%s'" % (item['detail_info']['environment_rating'],item['uid'])print(update)cursor.execute(update)判断POI是否已经存⼊数据库#判断是否已经存⼊数据库def isExist(cursor,uid):sql = "select * from poidatas where uid = '%s'" % uid#print(cursor.execute(sql)) sql语句执⾏成功,返回的是1if cursor.execute(sql):return Trueelse:return False从excel表中读取POI类别def readExcel(path):data = xlrd.open_workbook(path)sheets = data.sheets()data_list=[]for i in range(len(sheets)):table=data.sheets()[i]table_rows=table.nrowstable_cols=table.ncolsfor j in range(table_rows):data_list.append( table.cell(j,0).value)return data_list拼接访问URLdef getUrlByName(name,ak,j):#矩形搜索,POI数量较少url = '/place/v2/search/?query=%s&page_size=20&page_num=%s&output=json&bounds=40.817,111.697,40.821,111.709&scope=2&ak=%s' %(name,j,ak) # ⾏政区域搜索,POI数量较多#url = '/place/v2/search/?query=%s&output=json®ion=呼和浩特&scope=2&ak=%s' %(name,ak)return urlMain函数def Main():ak = "~~~~~"name_list=readExcel(r'D:\poi类别.xls')db = pymysql.connect(host="localhost", user="root", password="root", database="poi")cursor = db.cursor()insertPOIData(name_list,ak,cursor)updateDetailInfo(ak, cursor)mit()cursor.close()。
对百度地图问题的回答:百度地图api里大概有30个类,api的链接是/map/ ,通过这个api可以轻松的获取百度服务和数据,构建功能丰富、交互性强的地图应用程序.这个api为我们开发者提供了本地搜索、路线规划、地图定位灯等数据的服务。
要使用百度地图api,首先要申请它的API key,申请这个key是为了相对百度系统唯一标识这个应用的。
申请完key之后,把这个key放到我们的常量接口中去。
这些做完之后还要添加地图引擎到工程中,这个引擎包含了百度mapapi的jar包和负责定位的loc SDK的jar 包。
在工程中添加网络状态的一些权限和获取手机信息的权限。
然后在布局文件中添加MapView控件用于展示地图。
这个MapView是百度地图api中继承ViewGroup的一个类,是一个自定义控件。
需要注意的是,在我们加载布局之前,要先到百度地图的服务器端校验我们获取到的key,校验时初始化地图引擎,使用地图引擎的管理类BMapManager进行初始化,初始化时会校验key还有网络状态。
key为300时表示授权验证失败,网络状态为2时表示未连接上网络。
做了这几步就可以把地图展示在手机上面。
只做以上几步,我遇到了这样一个问题,当第一次显示地图时能够正常显示,但退出后,再进来就看不到地图的。
这时候就得考虑到activity的生命周期问题了,得把activity的onResume、onPause、onDestroy这三个方法都覆写后才能正常显示。
使用这个api有三个核心的类BMap Manager、MapView、MapController.BMapManager类用于地图的管理,比如地图的初始化;MapView类用于地图的展示;MapController类用于对地图的控制,主要用于控制地图的移动、缩放和旋转。
对当前正在显示的Map进行控制。
效果一:地图的放大与缩小。
通过MapView设置缩放控件,首先要明确缩放级别。
POI数据处理流程POI(Point of Interest)数据处理流程是指对POI数据进行收集、清洗、整理、分析和应用的一系列操作。
以下是一个1200字以上的POI数据处理流程的详细介绍。
1. 收集数据:POI数据可以从各种渠道收集到,包括公开的数据库、第三方数据提供商、地图服务提供商等。
这些数据可以是结构化数据(如CSV、Excel文件)或非结构化数据(如文本文件、网页)。
收集数据的目的是获取要处理的原始数据集。
2.数据清洗:在进行数据分析前,需要对原始数据进行清洗。
数据清洗包括去除重复数据、处理缺失值、纠正错误数据等操作。
此外,还可以对数据进行规范化,如将地址转换为标准格式,统一单位等。
3. 数据整理:在清洗完数据后,需要对数据进行整理,使其适合后续的分析和应用。
数据整理包括数据格式转换、数据集成、数据标准化等。
可以使用数据库管理系统(如MySQL、Oracle)或数据处理工具(如Python的Pandas库)来完成这些操作。
4. 数据分析:数据分析是对POI数据进行统计、挖掘和模型构建等操作,以获得有用的信息和洞察力。
数据分析的方法包括聚类分析、分类分析、关联分析等。
可以使用统计分析工具(如R、SPSS)或机器学习工具(如Python的Scikit-learn库)进行数据分析。
5. 数据可视化:数据可视化是将POI数据以图表、地图等形式展示,使得数据更易于理解和解释。
数据可视化可以通过使用数据可视化工具(如Tableau、D3.js)或编程语言(如Python的Matplotlib库和Seaborn库)来实现。
6.数据应用:最后,将经过处理的POI数据应用到具体的业务场景中。
根据具体的需求,可以将POI数据用于地图导航、商业分析、城市规划等领域。
根据具体的应用需求,可能需要开发相应的应用程序或网站。
在进行POI数据处理的过程中,还需要注意以下几点:1.数据质量控制:在数据收集、清洗和整理过程中,需要对数据质量进行控制。
根据经纬度,如何获取地址(经纬度解析中文地址)移动开发中和poi数据开发中,需要通过经纬度,获取省、市、区(县)等中文地址,这个一直没有标准的技术解决方案,LBS数据中心经过努力,完全解决了这一问题。
具体的实现方式如下:国内唯一权威、标准的经纬度解析数据库,根据精度和纬度每变化0.01,就解析一次标准的地址,完全覆盖全国,数据量980万条。
数据样式:百度地图数据(poi数据)的技术解决方案百度地图目前拥有超过2000完的地图数据,数据的格式包含了商户数据、道路数据、楼宇数据、社区数据、村庄数据等,数据包含了类别、经纬度、电话、名称等,数据格式如下:mapabc地图(也叫高德系列,包含谷歌等地图数据)全国兴趣点poi商户数据共1500多万条,包含地址、电话、经纬度、类别,CSV格式。
谷歌数据格式如下:数据的获取和更多的信息可以查看官方新浪博客:/u/2928794464数据获取和技术QQ咨询:2640056519官方博客拥有以下数据库:纠偏数据库(google地图)精度为0.01:经纬度每变化0.01,取一次偏移值,共980万条,access文件约600mb,误差5~10米。
精度为0.001:经纬度每变化0.001,取一次偏移值,共9亿条,csv文件共20gb,误差约2米。
百度地图纠偏数据库精度0.01,共2800万条全国商户数据poimapabc地图(也叫高德系列,包含谷歌等地图数据)全国兴趣点poi商户数据共1500多万条,包含地址、电话、经纬度、类别,CSV格式。
baidu百度地图poi:全国超过2000万条,永久免费更新技术问题二:各类地图的经纬度偏移的权威技术解决大家在做gps开发中经常会使用到经纬度数据,在开发中,你会发现一个问题,就是每个点的数据都会有偏移,这个就是经纬度偏移问题,那如何解决呢?这个就是需要用到权威的官方的(必须是官方的)纠偏数据库了!数据获取的方式也在新浪博客里面啊!地图经纬度纠偏(gps经纬度偏移及纠偏方法)以上非广告啊,是我在多年移动开发的经验分享,大家也可以和我做技术交流!技术案例:gps数据为什么在地图上的显示会有几百米甚至更多的偏移,这个就是中国国家测绘局的规定,为了安全期间,要求地图的出版商必须加入偏移规则,目前最权威和官方的解决方式就是使用纠偏数据库,百度和谷歌的纠偏数据库都是不一样的,但使用方法相同,下面我来介绍一下:下面是数据库的格式:中国地图经纬度偏移修正数据库,精度:0.01精度,数据量:9813676 条。
鉴于在一些答案中评论区中的讨论,由于不能上图,我还是来写一下这个答案罢。
这个问题比较复杂,要真尽量说清楚的话需要费不少口舌,因此答案会比较长,请看官不妨耐心点。
要说数据来源,首先得对地图数据做一个分类,因为不同分类的数据,其来源,采集方法都是有大不同的。
并非想说上面高票答案的分类方式不对或者不可以,只是说,其分类方式对于完全说明这个问题,可能不是太合适和合理。
里面的一些观点和描述也有一些小问题,所以做一些勘误和对问题更有针对性的补充,希望大家不要被一些谬误的概念所误导。
要明白地图的数据分类,必须先理解一个概念,就是地图图层的概念:如上图,电子地图对我们实际空间的表达,事实上是通过不同的图层去描述,然后通过图层叠加显示来进行表达的过程。
对于我们地图应用目标的不同,叠加的图层也是不同的,用以展示我们针对目标所需要信息内容。
其次呢,我引入一下矢量模型和栅格模型的概念,GIS(电子地图)采用两种不同的数学模型来对现实世界进行模拟:•矢量模型:同多X,Y(或者X,Y,Z)坐标,把自然界的地物通过点,线,面的方式进行表达•栅格模型(瓦片模型):用方格来模拟实体我们目前在互联网公开服务中,或者绝大多数手机APP里看到的,都是基于栅格(瓦片)模型的地图服务,比如大家看到的百度地图或者谷歌地图,其实对于某一块地方的描述,都是通过10多层乃是20多层不同分辨率的图片所组成,当用户进行缩放时,根据缩放的级数,选择不同分辨率的瓦片图拼接成一幅完整的地图(由于一般公开服务,瓦片图都是从服务器上下载的,当网速慢的时候,用户其实能够亲眼看到这种不同分辨率图片的切换和拼接的过程)对于矢量模型的电子地图来说,由于所有的数据以矢量的方式存放管理,事实上图层是一个比较淡薄的概念,因为任何地图元素和数据都可以根据需要自由分类组成,或者划分成不同的图层。
各种图层之间关系可以很复杂,例如可以将所有的道路数据做成一个图层,也可以将主干道做成一个图层,支路做成另外一个图层。
关于百度地图中坐标转换定位不准问题在做青岛的项⽬时,有很多企业需要定位,但是发现部分沿海的地区定位到海上了,才发现定位不准的问题。
本⼈踩坑点,包括了每次加载都打乱了坐标点的信息,和定位不准问题。
解决如下:注意转换⽅法convertor.translate对应的参数(其中的1和5)是以下意思。
我当时复制过来调⽤的3和5,所以定位不准,得看你是需要⽤哪种坐标转换哪种。
/*** 坐标常量说明:* COORDINATES_WGS84 = 1, WGS84坐标* COORDINATES_WGS84_MC = 2, WGS84的平⾯墨卡托坐标* COORDINATES_GCJ02 = 3,GCJ02坐标* COORDINATES_GCJ02_MC = 4, GCJ02的平⾯墨卡托坐标* COORDINATES_BD09 = 5, 百度bd09经纬度坐标* COORDINATES_BD09_MC = 6,百度bd09墨卡托坐标* COORDINATES_MAPBAR = 7,mapbar地图坐标* COORDINATES_51 = 8,51地图坐标*/// dtu坐标点loadDtuOneMap() {this.pointDtuArr.forEach((item, index) => {if (titude && item.longitude) {// 坐标点转换let that = thislet pointArr = [];let pt = new this.BMap.Point(item.longitude, titude)pointArr.push(pt);var convertor = new this.BMap.Convertor();convertor.translate(pointArr, 1, 5, function (data) {that.pointDtuArr[index].longitude = data.points[0].lngthat.pointDtuArr[index].latitude = data.points[0].latif (index == (that.pointDtuArr.length - 1)) {that.startDtu()}})}})},//创建dtu图标startDtu() {this.pointDtuArr.forEach((item, index) => {if (titude && item.longitude) {let pt = new this.BMap.Point(item.longitude, titude)// 坐标点var myIcon = new this.BMap.Icon(item.state == 1 ? this.dtuMarkerActiveUrl : this.dtuMarkerUrl, new this.BMap.Size(33, 33))myIcon.setImageSize(new this.BMap.Size(33, 33))// 创建标注点var marker = new this.BMap.Marker(pt, {icon: myIcon})this.marker3.push(marker)// 创建信息窗⼝对象let infoWindow = new Window(`<div style="line-height:28px;"><p style="font-size:18px;padding-bottom:5px;border-bottom:1px solid #ccc;color:#333;">${item.unitName}</p><p style="font-weight:700;color:#000;margin-top:10px;">dtu编号:<span style="color:#666;">${item.dtuid}</span></p><p style="font-weight:700;color:#000;">在线情况:<span style="color:${item.state==1?'#009900':'#990000'};">${item.state==1?'在线':'离线'}</span></p></div>`,)// 标注点击事件marker.addEventListener("click", function () {this.map.openInfoWindow(infoWindow, pt)})// 将标注添加到地图中this.map.addOverlay(marker) }})},。
全国poi数据的应用与技术解决方案
众说周知,POI数据是对于LBS是立足之本,与定位、地图用有同等重要的地位,对于互联网企业,他一头连着消费者,一头连着商家。
对于消费者通过互联网企业的地图服务找到想要的POI数据,对于商家通过在互联网企业做广告,让自己在搜索结果中排名靠前,或占据广告位置,对于互联网企业通过收取广告费用来盈利,google的位置业务在下一盘很大棋啊,高德的POI 数据经营模式也呼之欲出了,
看完别人的再来看咱自己的,咱自己的POI数据主要来自购买基础地图时附带的一部分基础POI数据以及单独购买的POI数据,POI数据很贵的,据说一条一块,(高德已经有2000万条了,就只2000万啊),花钱刚刚的,不眨眼啊!而且没有点评类的深度信息,我们是不是也应该向高德学习,发挥我们的优势,
一、建立增值POI平台,进行数据商业化运营、开辟数据获取渠道:
二、通过广大的集客客户来收集POI数据,丰富我们的POI数据,
三、把12580里的黄页信息整理,与POI数据库融合,也是很好的路子。
四、引入爬取方式(由增值POI平台厂家整合其他专业厂家的现有成熟技术);
五、UGC(由增值POI平台开放用户上传接口,并进行数据审核与过滤);
六、基层业务人员扫街
最新mapabc全国兴趣点、商户数据、poi数据,一共1490多万条,包含地址、电话、经纬度、类别,CSV格式,免费更新,目前基本上是每半年更新一次!
最新百度poi数据:全国超过2000万条,免费更新
数据格式如下:
Mapabc数据格式
百度地图poi数据格式
现在已经成功获取了以下数据库:
纠偏数据库(google地图)
精度为0.01:经纬度每变化0.01,取一次偏移值,共980万条,access文件约600mb,误差5~10米。
精度为0.001:经纬度每变化0.001,取一次偏移值,共9亿条,csv文件共20gb,误差约2米。
百度地图纠偏数据库:精度0.01,共2800万条
全国商户数据poi
mapabc地图全国兴趣点poi商户数据共1500多万条,包含地址、电话、经纬度、类别,CSV格式。
百度poi,全国2000万条以上
更加详细的内容可以查看新浪博客:/u/2928794464。