经纬度

GeoHash算法附近寻址

老子叫甜甜 提交于 2020-01-13 03:28:31
原文出处: zhanlijun 引子 机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西。某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐。 饭饱之后机机开始反思了,地图后台如何根据自己所在位置查询来查询附近餐馆的呢?苦思冥想了半天,机机想出了个方法:计算所在位置P与北京所有餐馆的距离,然后返回距离<=1000米的餐馆。小得意了一会儿,机机发现北京的餐馆何其多啊,这样计算不得了,于是想了,既然知道经纬度了,那它应该知道自己在西城区,那应该计算所在位置P与西城区所有餐馆的距离啊,机机运用了递归的思想,想到了西城区也很多餐馆啊,应该计算所在位置P与所在街道所有餐馆的距离,这样计算量又小了,效率也提升了。 机机的计算思想很朴素,就是通过过滤的方法来减小参与计算的餐馆数目,从某种角度上讲,机机在使用索引技术。 一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL、oracle、PostgreSQL等)都在使用B树。B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一般而言,可排序的是一维字段,比如时间、年龄、薪水等等。但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢?解决的方法很多,下文介绍一种方法来解决这一问题。

经纬度在大数据方面的应用(虚拟车站二)

牧云@^-^@ 提交于 2020-01-13 01:34:11
四、在全部的六边形区域内过滤出合适的区域作为虚拟车站点 实现方式: 对历史库的订单数据进行汇总,选出某个区域的订单数大于某个阈值(比如100) 代码实现: //1.创建h3实例 val h3 = H3Core.newInstance //2.经纬度转换成hash值 def locationToH3(lat: Double, lon: Double, res: Int): Long = { h3.geoToH3(lat, lon, res) }//将h3注册为udf函数 sparkSession.udf.register("locationToH3", locationToH3 _)4.//在sql语句中使用h3接口进行六边形栅格化 val gridDf = sparkSession.sql( s""" |select |ORDER_ID, |CITY_ID, |STARTING_LNG, |STARTING_LAT, |locationToH3(STARTING_LAT,STARTING_LNG,12) as h3code | from order |""".stripMargin)//5.分组统计 得到大于100个订单的区域 val groupCountDf = gridDf.groupBy("h3code").count().filter("count>=100") /

经纬度在大数据方面的应用(虚拟车站一)

一笑奈何 提交于 2020-01-09 02:21:24
一.如果有一批数据,知道某个主键比如ip地址、人的身份证、车牌、订单以及经纬度信息 那可以做出哪些事情? 1.某个ip对应的经纬度在哪个地区? 1.某个人出现的经纬度,根据人与经纬度关系,形成出行轨迹 3.某车牌或者车架对应的经纬度信息,车辆轨迹,借助地图做出,可以做交通数据应用 4.某个地区的订单信息 5.根据经纬度,一些十字路口或者地铁口附件乘车人比较多,来做出一些虚拟车站,就像打车软件上面绿色 二 什么是小绿点(虚拟车站) 这里所说的拨云见日的“小绿点”,其实是滴滴为打车乘客的推荐的智能上车地点,是一个“虚拟车站”和生活中的公交车站不同,单作用是相同的,为了在固定的区域位置提示用户方便乘车。因为在滴滴产品页面呈现是一个个绿色的小点,所以被亲切的称呼为“小绿点”。滴滴出行发现,乘客上车前类似“到在云彩下面来接我”的电话沟通,会浪费了司机与乘客大量的时间。为了根治此症,彻底消除可怕的云山雾罩般的找寻,“小绿点”便应运而生了。 如下图:叫车前,滴滴App界面会出现推荐的智能上车点 二、虚拟车站的业务难点 1.找出人们出行打车的所有小区域 2.筛选出打车人数、订单数比较多的区域,不能说历史数据中某个区域内只有一个订单就作为虚拟车站,约定一个阈值 3.根据这些区域内订单的经纬度的精度,那个精度最小选择哪个经纬度作为虚拟车站 三、使用uber-h3实现地图上小区域划分 uber

Winform下的地图开发控件(GMap.NET)使用心得之三---批量解析地址经纬度坐标

非 Y 不嫁゛ 提交于 2020-01-01 21:29:08
在之前的文章中,介绍了两篇关于GMap.NET这样的开源地图控件,介绍了其一些基本信息以及如何进行初步的应用。 Winform下的地图开发控件(GMap.NET)使用心得 Winform下的地图开发控件(GMap.NET)使用心得之二 这是一个基于Winform的地图控件。该地图控件的定义如下: GMap.NET是一个强大、免费、跨平台、开源的.NET控件,它在Windows Forms 和WPF环境中能够通过Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。 GMap.NET是一个开源的GEO地图定位和跟踪程序。就像谷歌地图、雅虎地图一样,可以自动计算两地的距离,定位经纬度,与Google地图不同的是,该项目是建立在C#语言WinForm基础上的。可以对地图放大缩小,进行城市标记等。 本文主要介绍应用该控件来批量解析地址经纬度坐标。由于项目需要,我需要把数据库里面的4千多条地址信息解析出经纬度坐标,以供其他用途。经纬度坐标不要求非常精确,大体位置准确即可。如果人工通过Googlemap或者其他途径标准,工作量非常大,而且也很枯燥。由于之前接触过该控件,知道好像比较容易能够解析获取地址的经纬度坐标,那么我们把数据库信息逐一解析即可

Winform下的地图开发控件(GMap.NET)使用心得

≡放荡痞女 提交于 2020-01-01 21:28:52
我们先看看GMap.NET的定义: GMap.NET是一个强大、免费、跨平台、开源的.NET控件,它在Windows Forms 和WPF环境中能够通过Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。 GMap.NET是一个开源的GEO地图定位和跟踪程序。就像谷歌地图、雅虎地图一样,可以自动计算两地的距离,定位经纬度,与Google地图不同的是,该项目是建立在C#语言WinForm基础上的。可以对地图放大缩小,进行城市标记等。 GMap.NET的项目地址是http://greatmaps.codeplex.com/,我们可以下载相关的例子和源码进行学习和研究。我在Google上搜过相关的项目,好像介绍的文章不多,不过不影响这个控件的强大和易用。我们先看看它的界面截图: GMap.NET号称是可以支持很多种地图来源的,不过我试了一下,好像有部分是有些问题,最好的效果是GoogleMapChina,如上图所示。 我用GoogleMapChina可以放大到很详细的街道图,做了一个地址查询的例子,如下所示: 控件可以绘出两地的行车线路或者步行线路等,而且能够算出两地的距离,不过对于地理编码的解析好像不是很准确,也获取不到公交线路等信息

Winform下的地图开发控件(GMap.NET)使用心得

我们两清 提交于 2020-01-01 21:28:34
我们先看看GMap.NET的定义: GMap.NET是一个强大、免费、跨平台、开源的.NET控件,它在Windows Forms 和WPF环境中能够通过Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。 GMap.NET是一个开源的GEO地图定位和跟踪程序。就像谷歌地图、雅虎地图一样,可以自动计算两地的距离,定位经纬度,与Google地图不同的是,该项目是建立在C#语言WinForm基础上的。可以对地图放大缩小,进行城市标记等。 GMap.NET的项目地址是 http://greatmaps.codeplex.com/ ,我们可以下载相关的例子和源码进行学习和研究。我在Google上搜过相关的项目,好像介绍的文章不多,不过不影响这个控件的强大和易用。我们先看看它的界面截图: GMap.NET号称是可以支持很多种地图来源的,不过我试了一下,好像有部分是有些问题,最好的效果是GoogleMapChina,如上图所示。 我用GoogleMapChina可以放大到很详细的街道图,做了一个地址查询的例子,如下所示: 控件可以绘出两地的行车线路或者步行线路等,而且能够算出两地的距离,不过对于地理编码的解析好像不是很准确,也获取不到公交线路等信息

Winform下的地图开发控件(GMap.NET)使用心得

空扰寡人 提交于 2020-01-01 21:28:12
我们先看看GMap.NET的定义: GMap.NET是一个强大、免费、跨平台、开源的.NET控件,它在Windows Forms 和WPF环境中能够通过Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现寻找路径、地理编码以及地图展示功能,并支持缓存和运行在Mobile环境中。 GMap.NET是一个开源的GEO地图定位和跟踪程序。就像谷歌地图、雅虎地图一样,可以自动计算两地的距离,定位经纬度,与Google地图不同的是,该项目是建立在C#语言WinForm基础上的。可以对地图放大缩小,进行城市标记等。 GMap.NET的项目地址是 http://greatmaps.codeplex.com/ ,我们可以下载相关的例子和源码进行学习和研究。我在Google上搜过相关的项目,好像介绍的文章不多,不过不影响这个控件的强大和易用。我们先看看它的界面截图: GMap.NET号称是可以支持很多种地图来源的,不过我试了一下,好像有部分是有些问题,最好的效果是GoogleMapChina,如上图所示。 我用GoogleMapChina可以放大到很详细的街道图,做了一个地址查询的例子,如下所示: 控件可以绘出两地的行车线路或者步行线路等,而且能够算出两地的距离,不过对于地理编码的解析好像不是很准确,也获取不到公交线路等信息

C#计算两个经纬度的距离

做~自己de王妃 提交于 2019-12-27 04:41:39
C#计算两个经纬度的距离 //地球半径,单位米 private const double EARTH_RADIUS = 6378137; /// <summary> /// 计算两点位置的距离,返回两点的距离,单位 米 /// 该公式为GOOGLE提供,误差小于0.2米 /// </summary> /// <param name="lat1">第一点纬度</param> /// <param name="lng1">第一点经度</param> /// <param name="lat2">第二点纬度</param> /// <param name="lng2">第二点经度</param> /// <returns></returns> public static double GetDistance(double lat1, double lng1, double lat2, double lng2) { double radLat1 = Rad(lat1); double radLng1 = Rad(lng1); double radLat2 = Rad(lat2); double radLng2 = Rad(lng2); double a = radLat1 - radLat2; double b = radLng1 - radLng2; double result = 2

省市县镇村五级行政区划数据含经纬度(含74万行政村)

岁酱吖の 提交于 2019-12-25 10:59:19
省市县镇村五级行政区划数据含经纬度(74万行政村) 数据经过处理加工分别形成省、市、县区,乡镇、农村五级行政区划数据 其中包含31个省份,345个市,2856个县,43854个乡镇、693337万个自然村,可以用于电商等收件地址选择等场景、也可用于定位导航等。 某官网4级行政数据不含经纬度价格如下: 本数据样例如下: 数据为可提供数据库格式 本数据由作者采集,清洗加工而成,过程耗费了大量时间和精力,需要的可有偿提供。另外作者可提供数据采集,加工处理,应用程序开发等服务,需要的可以私信作者。 来源: CSDN 作者: 大数据服务 链接: https://blog.csdn.net/a913222/article/details/103693470

聊聊GIS中的坐标系|再版

我们两清 提交于 2019-12-23 06:03:14
本文约6500字,建议阅读时间15分钟。 作者:博客园/B站/知乎/csdn/小专栏 @秋意正寒 版权:转载请告知,并在转载文上附上转载声明与原文链接( https://www.cnblogs.com/onsummer/p/12081889.html )。 【目录】 1. 经纬度与米【告诉大家GIS中的坐标系核心的两种坐标系定义,地理坐标系统vs投影坐标系统】 2. 为什么有两种表达(不同点) 3. 内在联系(相同点)【指出投影坐标系统的广义定义,即PCS=f(GCS)】 4. 常用坐标系统(4.1 WKID;4.2 地理坐标系统;4.3 投影方法;4.4 投影坐标系统;4.5 GCJ02与BD09;4.6 经纬度直投) 5. 常用坐标系统的判别与常用软件中的操作(待补充) 我的牢骚与参考文档 1. 经纬度 (例: 119.32°E, 32.48°N)与 米 (∟, 直角坐标) 让基础浅薄的同学、GIS外行疑惑的,可能就是这两种“单位”的坐标值,以及他们的转换了吧。 2019年是一个不同寻常的年份,大大小小的地震总能被人民日报大V转发。 地震信息一般会带什么呢? 这是一条地震消息,它除了时间、地震等级等消息外,有一个很重要的消息:北纬36.16度,东经98.93度,为了方便,我们用数学的坐标表示法: 点P,P(98.93°E, 36.16°N) 其中,E就是单词East(东)