我正在寻找在.NET中实现空间查询而不使用SQL2008.第一个要求是能够创建(BTree样式)空间索引并能够查询它.
尽管SQL 2008附带了针对类型的.NET库,但您需要将SQL用于空间索引.
是否有人使用任何.NET库来处理空间数据(操作系统或商业)?我正在看NetTopologySuite,但它看起来很安静,我不想要一个死库.
我正在设计一个需要在数据库中保存几何形状的应用程序.我还没有选择数据库管理系统.
在我的应用程序中,所有数据库查询都有一个边界框作为输入,作为输出我想要该数据库中的所有形状.我知道具有空间索引的数据库用于这种应用程序.但是在我的应用程序中,不会有任何类型的问题"给我x/y附近的对象"或者在GIS应用程序中有用的其他更复杂的查询.
我计划拥有一个没有空间索引的数据库,并且查询类似于:
SELECT * FROM shapes WHERE x < max_x AND x > min_x AND y < max_y AND y > min_y
Run Code Online (Sandbox Code Playgroud)
并且列和列上有索引.我可以看到,我真的不需要一个具有空间索引的数据库,无论我的应用程序接近那种应用程序.x (double)y (double)
即使我想要附近的查询,那么我可以围绕这一点创建一个足够大的边界框.或者这会导致表现不佳?
我真的需要空间数据库吗?何时需要空间索引?
编辑: 搜索查询实际上比我上面写的更先进,因为我处理几何形状我将输入一个边框,它将返回多个形状(带有边界框)内部或干扰框在查询中.但在阅读了所有好的答案之后,我仍然认为我可以在没有空间索引的情况下做到这一点.
我的任务是选择我们即将在即将开展的项目中使用的全文搜索引擎.基于我所读到的,我倾向于Solr,但我有点担心空间搜索.除了一些其他参数(关键字,类别等),我们希望能够指定位置和最大距离(例如,在距离亚利桑那州坦佩25英里的范围内).我们希望能够按距离对结果进行排序.
空间SOLR显然是相当新的,并不完全清楚它的成熟度.还有一些其他选项(手动计算然后反转距离,或solr-spatial-light.
我的问题基本上是:Spatial Solr(或solr-spatial-light)是否足够准备黄金时段来处理我上面描述的情况,或者我们最好不要使用Sphinx?
我也有兴趣听听实现其中任何一个的一般经验,特别是php.
与spplot()图例相比,如何使用ggplot改进空间栅格地图的图例?
我想使用ggplot()而不是ssplot()绘制空间地图,但是与spplot相比,我想提高一些方面:
## load packages
require(raster)
require(ggplot2)
require(rgdal)
require(RColorBrewer)
set.seed(1)
r <- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40,
crs="+proj=lcc +lat_1=48 +lat_2=33 +lon_0=-100
+ellps=WGS84")
r <- setValues(r,matrix(rnorm(1600, mean=0.4,sd=0.2)))
## 1. spatial map with spplot
cuts <-seq(minValue(r),maxValue(r),length.out=8)
cuts = round(cuts,digits=2)
col.regions = brewer.pal(length(cuts)+3-1, "RdYlGn")
print(
spplot(as(r, 'SpatialGridDataFrame'),at=cuts,
col.regions=col.regions,
colorkey=list(labels=list(at=cuts),at=cuts), pretty=TRUE,
scales=list(draw=T)
)
)
## 2. spatial map with ggplot
p = rasterToPoints(r); df = data.frame(p)
colnames(df) = c("x", "y", "NDVI")
p <- ggplot(data=df) + geom_tile(aes(x, y, fill=NDVI)) +
coord_equal() + …Run Code Online (Sandbox Code Playgroud) 我需要将shape文件中的空间数据导入MySQL表.我可以导入PostGreSQL.MySQL的任何指针.我需要MySQL表中的数据.
我正在尝试使用中心和半径的坐标在MySQL中创建圆几何.我到处搜索...我在网站上的MySQL文档中找到的所有内容都是多边形的.可能是我在找错了地方.任何人都可以帮助我使用适当的SQL来帮助我创建一个表,该表将这个Circle几何存储为表中的一列吗?另外,我甚至不确定在MySQL中是否有办法这样做?我正在使用的版本是 MySQL 5.6.
提前致谢.
我有一个看似正确配置的空间图层和索引,并且可以使用findGeometriesWithinDistance REST API调用成功查询节点.
POST /db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance {"layer":"geom","pointX":15.0,"pointY":60.0,"distanceInKm":100.0}
Run Code Online (Sandbox Code Playgroud)
但是,当使用cypher进行查询时,我没有得到任何结果(我试过没有运气就颠倒了60.0和15.0的顺序):
START n=node:geom('withinDistance:[60.0, 15.0, 500.0]') return n;
Run Code Online (Sandbox Code Playgroud)
Cyper返回:
==> +---+
==> | n |
==> +---+
==> +---+
==> 0 row
==>
==> 13 ms
Run Code Online (Sandbox Code Playgroud)
休息:
200 OK
==> [ {
==> "paged_traverse" : "http://localhost:7474/db/data/node/14472/paged/traverse/{returnType}{?pageSize,leaseTime}",
==> "outgoing_relationships" : "http://localhost:7474/db/data/node/14472/relationships/out",
==> "data" : {
==> "lon" : 15.2,
==> "bbox" : [ 15.2, 60.1, 15.2, 60.1 ],
==> "RaceName" : "Parador Es Muy Caliente",
==> "lat" : 60.1,
==> "gtype" : 1
==> },
==> …Run Code Online (Sandbox Code Playgroud) 我有一个使用像地理空间领域的一些车型POINT,POLYGON或MULTIPOLYGON.我想告诉我的模型以特殊方式处理这些属性,以便我获得所需的模型属性集.
示例:每个常规Model::find()或其他Eloquent方法应在存储之前或检索数据库值之后应用一些自定义代码.
$area->surface是POLYGONMySQL中的一个字段,但在我的模型类中,我想$area->surfare作为一个点数组来处理.
在SELECT因此,我要像1)使用原始表达式来获取值的文本表示获取值,和2)通过一些自定义的PHP代码到WKT字符串转换成一个数组.
在INSERT/UPDATE我想取属性值(数组)和1)将其转换为WKT字符串,然后2)使用存储该值的DB原始语句将其写入数据库.
我想在一个字段的基础上设置它,而不是作为每个字段的特殊get/set函数,而不是在控制器中 - 因为我有许多地理空间字段.
有没有办法在Laravel实现这一目标?
(同一个问题的一个更抽象的版本,就是我如何创建操作实际SQL查询的属性值的代码,而不仅仅是通过mutators和accessors进行一些基于值的操作)
更新:
深入了解Laravel Doc和API,我发现这个Eloquent::newQuery()方法可能是我需要操作的吗?这会用于任何查询,无论是否SELECT,INSERT或UPDATE?
我有这么简单 data.frame
lat<-c(1,2,3,10,11,12,20,21,22,23)
lon<-c(5,6,7,30,31,32,50,51,52,53)
data=data.frame(lat,lon)
Run Code Online (Sandbox Code Playgroud)
想法是基于距离找到空间聚类
首先,我绘制地图(lon,lat):
plot(data$lon,data$lat)
Run Code Online (Sandbox Code Playgroud)

很明显我有三个基于点位置之间距离的聚类.
为此目的,我在R中尝试了这个代码:
d= as.matrix(dist(cbind(data$lon,data$lat))) #Creat distance matrix
d=ifelse(d<5,d,0) #keep only distance < 5
d=as.dist(d)
hc<-hclust(d) # hierarchical clustering
plot(hc)
data$clust <- cutree(hc,k=3) # cut the dendrogram to generate 3 clusters
Run Code Online (Sandbox Code Playgroud)
这给出了:

现在我尝试使用簇中的颜色绘制相同的点
plot(data$x,data$y, col=c("red","blue","green")[data$clust],pch=19)
Run Code Online (Sandbox Code Playgroud)
结果如下

这不是我想要的.
实际上,我想找到像这样的情节

谢谢你的帮助.
我正在与Unity中的Hololens合作,试图绘制一个大面积(15x15x25)米的地图.我可以使用SpatialMapping预制件映射整个区域,但我想对该网格进行一些空间处理,以使地板和墙壁平滑.我一直试图用SpatialUnderstanding它,但似乎有一个硬限制你可以扫描这个区域的大小,这已经由hololens论坛线程详细说明.
目前,我并不了解数据的管道从工作SpatialMapping到SpatialUnderstanding.为什么我不能简单地使用从产生的网格SpatialMapping中SpatialUnderstanding?有没有更好的方法来创建光滑的表面?