标签: gis

找到两个纬度/长点之间距离的最快方法

我目前在mysql数据库中的位置不到一百万个,都有经度和纬度信息.

我试图通过查询找到一个点和许多其他点之间的距离.它没有我想要的那么快,尤其是每秒100次点击.

是否有更快的查询或可能比mysql更快的系统?我正在使用此查询:

SELECT 
  name, 
   ( 3959 * acos( cos( radians(42.290763) ) * cos( radians( locations.lat ) ) 
   * cos( radians(locations.lng) - radians(-71.35368)) + sin(radians(42.290763)) 
   * sin( radians(locations.lat)))) AS distance 
FROM locations 
WHERE active = 1 
HAVING distance < 10 
ORDER BY distance;
Run Code Online (Sandbox Code Playgroud)

注意:提供的距离以英里为单位.如果您需要公里数,请使用6371而不是3959.

mysql gis location

216
推荐指数
9
解决办法
18万
查看次数

编写纬度和经度元组的首选顺序

在处理GIS源代码时,您经常需要编写纬度和经度坐标元组.

例如,在谷歌地图链接(123,456):

http://maps.google.com/maps/ms?msid=214518704716144912556.00046d7689a99e95b721c&msa=0&ll=123,456&spn=0.007996,0.026865

哪个是首选顺序(为什么?)

  • 纬度,经度

  • 经度和纬度

我已经看到它们被用于各种系统,我希望找到一些证据来坚持使用其他系统.

gis google-maps latitude-longitude

128
推荐指数
8
解决办法
6万
查看次数

GeoJSON和TopoJSON之间的区别

GeoJSON和TopoJSON之间的区别是什么?我何时使用另一个?

GitHub上TopoJSON描述意味着TopoJSON文件缩小了80%.那么为什么不一直只使用TopoJSON呢?

gis geojson d3.js topojson

83
推荐指数
2
解决办法
3万
查看次数

GIS:PostGIS/PostgreSQL与MySql与SQL Server的对比?

编辑:我已经使用Postgres和PostGIS几个月了,我很满意.

我需要分析几百万个地理编码记录,每个记录都有纬度和经度.这些记录包括至少三种不同类型的数据,我将试图看看每一组是否影响另一组.

什么数据库最适合所有这些数据的底层数据存储?这是我的愿望:

  • 我熟悉DBMS.我对PostgreSQL最弱,但我愿意学习其他所有东西.
  • 它适用于GIS查询.谷歌搜索表明PostgreSQL + PostGIS可能是最强的吗?至少很多产品似乎都在使用它.MySql的Spatial Extensions似乎相对最小?
  • 低成本.尽管SQL Server Express 2008 R2中的数据库限制为10GB,但我不确定是否要接受免费版本的此限制和其他限制.
  • 与Microsoft .NET Framework不矛盾.感谢Connector/Net 6.3.4,MySql适用于C#和.NET Framework 4程序.它完全支持.NET 4的实体框架.虽然我不反对为Devart的dotConnect for PostgreSQL专业版支付180美元,但我找不到任何非商业性的PostgreSQL等价物.
  • 与R兼容.看起来所有这三个都可以使用ODBC与R通信,因此可能不是问题.

我已经使用MySql进行了一些开发,但如果有必要我可以更改.

mysql gis postgresql geocoding postgis

66
推荐指数
3
解决办法
5万
查看次数

将shapefile(.shp)转换为xml/json

我正在使用shapefile(.shp,.dbf等),并希望将其转换为xml.我在Mac上,我很难找到一个可以帮助我进行转换的应用程序.有谁知道将这种文件格式转换为xml文件的方法?

xml gis file-format

65
推荐指数
4
解决办法
6万
查看次数

在谷歌地图上叠加ESRI shapefile的最佳方法?

在Google地图中叠加shapefile的最佳方法是什么?

经过一些阅读建议,将shapefile转换为KML并在Google地图中叠加KML是一种选择.如果是这种情况,我如何将shapefile转换为KML?

我相信会有一些开源工具可用于此转换.任何人都可以指向一个工具来将shapefile转换为KML而不会丢失任何数据吗?

gis google-maps kml shapefile google-maps-api-3

63
推荐指数
4
解决办法
11万
查看次数

得到当前点,距离和方位的纬度/长度

给定lat/long中的现有点,(以KM表示)和方位(以度数转换为弧度)的距离,我想计算新的纬度/经度.这个网站反复出现,但我无法让这个公式为我工作.

采用上述链接的公式为:

lat2 = asin(sin(lat1)*cos(d/R) + cos(lat1)*sin(d/R)*cos(?))

lon2 = lon1 + atan2(sin(?)*sin(d/R)*cos(lat1), cos(d/R)?sin(lat1)*sin(lat2))
Run Code Online (Sandbox Code Playgroud)

上述公式适用于MSExcel,其中 -

asin          = arc sin()   
d             = distance (in any unit)   
R             = Radius of the earth (in the same unit as above)  
and hence d/r = is the angular distance (in radians)  
atan2(a,b)    = arc tan(b/a)  
? is the bearing (in radians, clockwise from north);  
Run Code Online (Sandbox Code Playgroud)

这是我在Python中获得的代码.

import math

R = 6378.1 #Radius of the Earth
brng = 1.57 #Bearing is 90 degrees converted …
Run Code Online (Sandbox Code Playgroud)

python gis distance latitude-longitude

62
推荐指数
6
解决办法
8万
查看次数

是否有一种有效的算法来生成2D凹壳?

从GIS文件(城市地图)获得一组(2D)点,我需要生成定义该地图(其边界)的"轮廓"的多边形.它的输入参数是点集和"最大边长".然后它将输出相应的(可能是非凸的)多边形.

到目前为止,我发现的最佳解决方案是生成Delaunay三角形,然后移除长度超过最大边长的外边缘.在所有外边缘都短于此之后,我只需移除内部边缘并获得我想要的多边形.问题是,这非常耗时,我想知道是否有更好的方法.

gis algorithm math geometry 2d

60
推荐指数
2
解决办法
3万
查看次数

使用谷歌地图加载本地.kml文件?

我创建了一个hello world程序来加载一个本地kml文件(借用谷歌的文档):

var ctaLayer = new google.maps.KmlLayer("http://localhost:8080/kml/cta.kml");
Run Code Online (Sandbox Code Playgroud)

这不起作用(没有任何东西被加载).

但是,当我将该行更改为:

  var ctaLayer = new google.maps.KmlLayer("http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml");
Run Code Online (Sandbox Code Playgroud)

它正确加载.两个kml文件都是相同的.在自己提供服务时,我需要做些什么来加载它?(我尝试了绝对和相对路径,我知道我使用的路径是正确的......)

我还在我的appserver的配置文件中添加了正确的mime类型:

<mime-mapping>
    <extension>kml</extension>
<mime-type>application/vnd.google-earth.kml+xml</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>kmz</extension>
    <mime-type>application/vnd.google-earth.kmz</mime-type>
</mime-mapping>
Run Code Online (Sandbox Code Playgroud)

但它仍然没有加载.

我在谷歌的文档中发现了这个:

Google Maps API支持用于显示地理信息的KML和GeoRSS数据格式.这些数据格式使用KmlLayer对象显示在地图上,该对象的构造函数采用可公开访问的KML或GeoRSS文件的URL.

所以,我想什么,我试图做的是没有可能的,而不从公开访问的网址服务的KML ......除非有人能够证明否则

gis kml kmz google-maps-api-3

52
推荐指数
3
解决办法
7万
查看次数

从纬度/经度确定时区,而不使用像Geonames.org这样的网络服务

有没有可能在不使用webservices的情况下确定point(lat/lon)的时区?Geonames.org对我来说不够稳定:(我需要这个在PHP中工作.

谢谢

javascript php gis timezone geolocation

49
推荐指数
6
解决办法
4万
查看次数