我的公司正在寻找不同的数据库提供商,以及他们如何实现地理空间查询以从Lat/Long获取大量记录的距离.
我们将调查PostgreSQL作为潜在的数据库平台.
使用geoDjango,有什么区别
myObj.objects.filter(point__dwithin(...etc.))
Run Code Online (Sandbox Code Playgroud)
和
myObj.objects.filter(point__distance_lt(...etc.))
Run Code Online (Sandbox Code Playgroud)
?
它们是同一个东西,还是它们做着微妙不同的事情?
我正在寻找一个能够对lat/lon数据集进行空间计算的Java库.以下是我正在寻找的一些功能:
我不想要的:
该组织计划最终获得Oracle Spatial的许可证(因此,此时将覆盖空间搜索),但是现在我需要在不依赖数据库提供的空间的情况下在小数据集上实现我上面提到的分析功能.支持.
背景:我是OpenLayers的一个只有几个小时的新手,请保持温柔.
从根本上说,我有一个地图上有一些绘制的对象.如果我理解正确,我有一些OpenLayer.Feature.Vector(layers?),上面有许多OpenLayer.Geometry"thing"(如LinearRing).
目前,我似乎能够使用.toString()获得几何体的良好表示.是的,我怀疑我做错了 - 随意指出我正确的方向.
这产生了一个非常人性化的,可存储数据库的字符串,例如:
要点(-104.74560546875 44.2841796875)
POLYGON(( - 96.52783203125 44.6796875,-96.52783203125 45.734375,-92.22119140625 45.734375,-92.22119140625 44.6796875,-96.52783203125 44.6796875))
LINESTRING(-105.71240234375 44.6796875,-106.06396484375 42.658203125,-103.55908203125 42.7021484375,-103.47119140625 45.55859375,-104.65771484375 45.20703125)
有没有一种相反的方法可以将它们从那里带回到对象格式中?
我喜欢使用JSON,但似乎无法让GeoJSON接受我的OpenLayer.Feature.Vector对象(这是CLASS_NAME属性在我进入内部时所说的).
非常感谢.
寻找一个java实用程序.如果您可以使用geotools库告诉我如何使用它,那就更好了.
我有一个矩阵有大约1000个地理空间点(经度,纬度),我试图找到1KM范围内的点.
注意:"这些点是动态的,想象1000辆车正在移动,所以我必须每隔几秒重新计算所有距离"
我做了一些搜索并阅读了像(Floyd-Warshall)这样的Graph算法来解决这个问题,我最终得到了很多关键词,现在我有点迷失了.我正在考虑性能,因为搜索半径很短,我不会考虑地球的曲率.
基本上,似乎我必须计算每个点到每个其他点之间的距离,然后从矩阵中的每个点开始对距离进行排序,并获得其范围内的点.因此,如果我有1000个坐标,我必须执行此过程(1000 ^ 2-1000)次,我不相信这是最佳解决方案.谢谢.
是否有一个Python模块,我可以创建具有地理位置坐标(纬度和经度)的对象,并查询所有对象是否在给定坐标的5公里距离(即半径)内?
我一直试图将纬度和经度存储为字典中的键(因为它们被键索引)并使用一些距离查找算法来查询它们.但这感觉就像一个可怕的黑客.
基本上就像PostGIS for PostgreSQL,但都在我的Python应用程序的内存中.
python geolocation geospatial coordinates geographic-distance
是否有服务/ API将采用邮政/邮政编码并返回边界(周边)坐标,以便我可以在MS SQL数据库中构建Geometry对象?
通过边界坐标,我的意思是我想要检索构建定义美国邮政编码的多边形的GPS坐标列表.
我有一个SpatialPolygonsDataFrame,包含11589个"polygons"类对象.这些对象中的10699个正好由1个多边形组成,但其余对象由多个多边形(2到22)组成.
如果一个对象由多个多边形组成,则可能有三种情况:
Stackoverflow帮助我正确地绘制了这样一个空间对象(绘制由多个多边形定义的空间区域).
但是,我仍然无法回答如何确定一个点(由经度/纬度定义)是否在多边形中.
以下是我的代码.我试图point.in.polygon在sp包中应用该函数,但是没有办法处理这样一个由多个多边形/孔组成的对象.
# Load packages
# ---------------------------------------------------------------------------
library(maptools)
library(rgdal)
library(rgeos)
library(ggplot2)
library(sp)
# Get data
# ---------------------------------------------------------------------------
# Download shape information from the internet
URL <- "http://www.geodatenzentrum.de/auftrag1/archiv/vektor/vg250_ebenen/2012/vg250_2012-01-01.utm32s.shape.ebenen.zip"
td <- tempdir()
setwd(td)
temp <- tempfile(fileext = ".zip")
download.file(URL, temp)
unzip(temp)
# Get shape file
shp <- file.path(tempdir(),"vg250_0101.utm32s.shape.ebenen/vg250_ebenen/vg250_gem.shp")
# Read in shape file
map <- readShapeSpatial(shp, proj4string = CRS("+init=epsg:25832"))
# Transform the geocoding from UTM to Longitude/Latitude
map <- …Run Code Online (Sandbox Code Playgroud) 我正在学习Redis,正在构建一个用于学习目的的地理计划.我想只使用Redis存储数据,并试图避免任何关系数据库.我的问题是如何最好地为该程序设计数据库.这就是程序的方式:
1)我将在世界各地创造数以百万计的随机机器人,这些机器人可以徘徊,因此它们可以有不同的地理坐标(一些机器人可以在完全相同的空间内).
2)每个机器人将随机发送一个帖子到服务器(平均每隔几个小时),其中包含:a)机器人从哪里发送这些数据的位置(根据最佳实施思路,在坐标或geohash中)b )一些小文字
3)我将拥有一张包含所有机器人的地图,并希望能够点击机器人并获取此信息:a)我刚刚点击机器人附近发布的所有帖子
4)由于我将在AWS上托管此事件,我将需要每隔几小时删除一次帖子以保持较低的内存使用率,因此某些类型的过期是必需的.
我主要担心的是性能,我对如何设计Redis数据库很感兴趣.
在一天之内(我将计算随机帖子的数学)这将产生大约500,000,000个帖子.
到目前为止我的不完整的想法:
想法1
1)帖子将被存储为:
`HSET [Geohash of location] [timestamp] [small text] (<-- the value will be used in a later feature to increment the number of manual modification I make to a post).
Run Code Online (Sandbox Code Playgroud)
2)然后,我可以通过发送他所在的geohash位置获得机器人附近的所有帖子.这里的垮台是我还需要包括他的8个geohash邻居,这将需要8个以上的查询.这就是为什么我也在研究这个特征的空间接近度的概念.
HGETALL [GeoHash Location of robot]
Run Code Online (Sandbox Code Playgroud)
然后,这将返回字段([timestamp])和值("0");
3)旧帖子到期.由于我无法使用EXPIRE命令从哈希集中删除字段,因此我需要定期扫描所有哈希集字段并查找旧时间戳并将其删除.由于Redis只允许模式搜索,因此当所有时间戳不同时,这可能会很困难.
想法2:
使用Redis-geo(https://matt.sh/redis-geo).
1)要存储我将运行的帖子:
geoadd globalSet [posts_long] [posts_lat] "small text";
Run Code Online (Sandbox Code Playgroud)
2)获取附近机器人的所有发布信息:
georadius globalSet [robots_long] [robots_lat] [X] km
Run Code Online (Sandbox Code Playgroud)
这将返回X kms内机器人附近的所有帖子.
3)然后我现在卡住了如何删除旧帖子
geospatial ×10
geolocation ×3
java ×2
polygon ×2
spatial ×2
algorithm ×1
coordinates ×1
django ×1
geocoding ×1
geodjango ×1
geojson ×1
geometry ×1
geotools ×1
gis ×1
google-maps ×1
great-circle ×1
json ×1
nosql ×1
openlayers ×1
persistence ×1
postgresql ×1
python ×1
r ×1
redis ×1
sql-server ×1