标签: spatial

在C++中操作空间数据的一些推荐框架是什么?

在C++中操作空间数据的一些推荐框架是什么?

我正在寻找一个多边形对象,点对象,以及一些像union,intersection,distance和area这样的操作.我需要在WGS84(lon,lat)中输入坐标并获得平方公里的面积.

我更喜欢免费/开源框架,但我愿意接受建议.

编辑:不幸的是我需要一个非GPL解决方案.LGPL没问题.

c++ polygon spatial geospatial

7
推荐指数
1
解决办法
2724
查看次数

我可以在SQL Server 2008中创建"覆盖,空间"索引吗?

我目前有一个网站,其中包含一个具有Lat/Long浮点列的表,以及这两列的索引以及另一个我需要检索的列.

我一直在查询这个表,以获得从某一点落入半径范围内的行(我实际上得到了一个方形的速度),但我只需要已经编入索引的字段,所以这个索引实际上是覆盖的,执行计划只有两个步骤:

Index Seek  (cost: 100%) and SELECT (cost: 0%)
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试利用SQL 2008的空间功能.我创建了Geography列,填充它,创建空间索引,工作.

这一切都运行正常,除了执行计划有一百万步,并且74%的时间花在了Clustered Index Seek上,它将它在Spatial Index中找到的行连接到实际表,以获得其余的数据...
(空间索引寻求占执行计划成本的1%)

所以,显然,它是正确地使用Spatial索引并使用我的"常规"索引比Lat/Long更快地找到我需要的记录,但加入主表是杀了我,空间查询需要7倍作为只要我的旧的.

有没有办法在空间索引中添加更多的列,以便它可以覆盖它,它可以一步完成,就像以前一样?
还有其他方法可以改善这种情况吗?


更新:我发现"常规"索引可以使用INCLUDE关键字"包含"其他列(我不知道,我过去只在索引本身中包含列)
根据此处的文档,该子句不是空间索引的选项...任何想法?

谢谢!
丹尼尔

spatial sql-server-2008 spatial-index covering-index

7
推荐指数
1
解决办法
987
查看次数

2D遮挡剔除的最佳解决方案

在我的2D游戏中,我有静态和动态对象.可以有多个摄像头.我的问题:确定与当前相机的视图矩形相交的对象.

目前,我只是遍历所有现有对象(不关心动态或静态)并使用相机视图对其进行AABB检查.这对于非常动态的对象来说似乎是可以接受的,但对于静态对象来说却是不可接受的,在静态对象中可能存在数以万计的静态对象(静态级别几

我已经研究了可以解决我的问题的多个数据结构:

  • 四叉树

这是我考虑的第一件事,但问题是它会迫使我的场景具有固定的大小.(可接受静态,但不适用于动态对象)

  • 动态AABB树

看起来不错,但重新平衡它的开销似乎对许多动态对象来说太大了.

  • 空间哈希

这里的主要问题是,如果你大量使用相机缩小,必须查询大量不存在的空间散列桶,导致性能低下.

总的来说,我对这个问题的良好解决方案的标准是:

  • 动态大小:解决方案不得导致场景大小受限,或者需要大量重新计算才能调整大小

  • 良好的查询性能(适用于相机)

  • 对非常动态对象的良好支持:处理不断变化位置的对象所需的计算应该是好的:

一次我游戏中动态对象的最大合理数量可能是5000.考虑它们每一帧都改变它们的位置.考虑到频繁的插入和删除,是否有一个数据结构可以更快,而不是每帧比较物体的AABB和相机?

2d occlusion spatial quadtree culling

7
推荐指数
1
解决办法
3835
查看次数

Microsoft.OData.Core和Microsoft.Data.OData之间的区别

我正在使用启用OD​​ata的Web Api.我开始工作时提到(只提到问题的相关dll)

Microsoft.AspNet.WebApi.OData
Microsoft.Data.OData
Microsoft.Data.Edm
System.Spatial
Run Code Online (Sandbox Code Playgroud)

但是当我发现OData默认区分大小写时,我寻找一个不区分大小写解决方案,我已经通过几个帖子支持OData Uri不区分大小写的解析ODataLib 6.7.0发布然后最终登陆到nuget包Microsoft.OData.核心6.9.0似乎解决了我的问题.在这里我的困惑开始了,它在不同的命名空间下有自己的集合相关库

Microsoft.OData.Core-----------VS------Microsoft.Data.OData
Microsoft.OData.Edm------------VS------Microsoft.Data.Edm
Microsoft.Spatial--------------VS------System.Spatial
Run Code Online (Sandbox Code Playgroud)

上面类似的库之间有什么区别,我们应该相互使用?在矿山的类似案件,Microsoft.OData.Core可以使用的,而不是Microsoft.Data.OData这是解决区分大小写的问题?

rest spatial odata asp.net-web-api

7
推荐指数
1
解决办法
3677
查看次数

将 geoJson 数据转换为 sql server 空间数据类型(GIS)

我已经从 openstreetmaps 行政边界(城市、地区、国家等)下载了 geoJson 格式。

我正在尝试使用空间数据将与多边形相关的 json 数据存储在我的 ms sql server 中。由于我从未解析过如此复杂的 json 文件,因此在手动创建 ac# 对象来存储解析数据时遇到了困难。

我正在使用 newtonsoftJson.json 来读取 geoJson 文件并创建一个对象。然后我使用反射来获取与对象相关的属性。这是一项相当乏味的任务,因为在某些情况下,对象在 geojson 文件中嵌套在 4 层以上。由于我必须存储世界上所有城市的多边形,因此我显然需要一种更快更准确的方法。

  1. 实现我的目标的最佳方法是什么?
  2. 我想 json 模式可能会有很大帮助,但是如何呢?
  3. 是否有标准的 geoJson 模式,从某种意义上说,如果我将模式用于 openstreetmaps 和其他 GIS 框架(谷歌地图),它是否兼容?

c# gis json spatial geojson

7
推荐指数
2
解决办法
4368
查看次数

在R中创建网格以在gstat中进行克里金法

lat    long
7.16   124.21
8.6    123.35
8.43   124.28
8.15   125.08
Run Code Online (Sandbox Code Playgroud)

考虑这些坐标,这些坐标对应于测量降雨量数据的气象站.

R中gstat包的介绍使用了meuse数据集.在本教程的某些时候:https://rpubs.com/nabilabd/118172,这些人在这行代码中使用了"meuse.grid":

data("meuse.grid")
Run Code Online (Sandbox Code Playgroud)

我没有这样的文件,我不知道如何创建它,我可以使用这些坐标创建一个吗?或者至少向我指出讨论如何为自定义区域创建自定义网格的材料(即不使用GADM的管理边界).

可能写错了,甚至不知道这个问题是否对R精明的人有意义.不过,我很乐意听到一些方向,或者至少是提示.非常感谢!

R的总瘤和统计数据.

编辑:看到我发布的教程看起来像的样本网格,这是我想做的事情.

编辑2:这种方法是否可行?https://rstudio-pubs-static.s3.amazonaws.com/46259_d328295794034414944deea60552a942.html

r spatial gstat kriging

7
推荐指数
2
解决办法
7519
查看次数

MySql 8.0.11 空间查询慢了 100000 倍

我们已将 MySql 5.7 数据库的副本迁移到 Amazon RDS 上的 MySql 8.0.11。在可能的情况下,一切都是相同的。包含几何数据的表已被修改,因此几何列被限制为 SRID 0 并重建空间索引。两个数据库上的执行计划相同,表明查询使用的是空间索引。

在 MySql 5.7 上,以下查询需要 0.001 秒,在 MySql 8 上需要 108 秒。查看 MySql 8 上 100% 的执行统计信息“发送数据”。为什么?

SELECT r.roadid                             
FROM geocoder.osm_road r
WHERE mbrintersects(ST_Buffer(ST_GEOMETRYFROMTEXT('Point(-1.91289 52.58260)',0),0.0005), r.geometry) 
Run Code Online (Sandbox Code Playgroud)

我们有许多不同的空间查询,而且所有查询都如此,但特别是 MBRINTERSECTS 和 ST_INTERSECTS 似乎非常慢。更改为 ST_CONTAINS(在可能的情况下)会带来显着的改进(即上述需要 3 秒而不是 108 秒),但这并不适合许多查询,并且仍然比 5.7 慢了很多。

Show Create Table for 5.7

CREATE TABLE `osm_road` (
  `roadid` bigint(20) NOT NULL,
  `reference` varchar(20) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `dictionary` longtext,
  `road_speed_limit` tinyint(4) unsigned NOT NULL,
  `road_speed_unitid` tinyint(1) NOT …
Run Code Online (Sandbox Code Playgroud)

mysql performance spatial

7
推荐指数
1
解决办法
1156
查看次数

R:SpatialPointsDataFrame 代码不再有效。!res[[1]] 中的错误:无效的参数类型

我一直在按照这个工作流程将坐标从东/北转换为 R 中的纬度/经度。直到今天它一直工作正常。这是一个可重现的示例:

require(rgdal)
# create test coordinates
x <- 259269 y <- 074728

# create test dataframe 
dat <- data.frame(x, y) 
class(dat) # "data.frame"

### shortcuts 
ukgrid <- "+init=epsg:27700" 
latlong <- "+init=epsg:4326"

### Create coordinates object 
coords <- cbind(Easting = as.numeric(as.character(x)),
                Northing = as.numeric(as.character(y)))
class(coords) # matrix
dat_SP <- SpatialPointsDataFrame(coords,
                              data = dat,
                              proj4string = CRS("+init=epsg:27700"))

# Error in !res[[1]] : invalid argument type

# Following steps ----

# Convert
dat_SP_LL <- spTransform(dat_SP, CRS(latlong)

# replace Lat, …
Run Code Online (Sandbox Code Playgroud)

r spatial rgdal r-sp

7
推荐指数
1
解决办法
2005
查看次数

为什么 terra::cellSize() 和 raster::area() 会产生不同的栅格单元面积估计值?

我刚刚注意到terra::cellSize()生成的单元格面积估计值与 生成的值不匹配raster::area()

首先,为什么这两种方法不能提供相同的答案?第二,哪个估计最准确?请参阅下面的示例。

library(raster)
#> Loading required package: sp
library(terra)
#> terra version 1.3.4

# make test raster with raster::raster()
a <- raster::raster(ncols = 100, nrows = 100,
            xmn = -84, xmx = -83, 
            ymn = 42, ymx = 43)

# make test raster with terra::rast()
b <- terra::rast(ncols = 100, nrows = 100, 
          xmin = -84, xmax = -83, 
          ymin = 42, ymax = 43)

# calculate cell areas (km2)
a_area <- raster::area(a) # km …
Run Code Online (Sandbox Code Playgroud)

gis r spatial r-raster terra

7
推荐指数
1
解决办法
1140
查看次数

有没有办法删除 ggplot 之外的空白?

我正在使用用于创建静态地图的代码来包含在闪亮的应用程序中。但我有一个问题,绘图大小比实际绘图大得多,因此布局看起来不正常。有什么办法可以减少绘图外部的空白吗?

如果可能的话,我希望输出只是情节本身。

我的意思是空白的绘制不佳的例子

# reprex
library(terra)
library(sf)
library(magrittr)
library(ggplot2)

lux <- vect(system.file("ex/lux.shp", package = "terra"))

p <- lux %>% 
  st_as_sf() %>%
  ggplot() +
  geom_sf(aes(fill = NAME_2), colour = "white", size = 0.2) +
  theme(legend.position = "None") +
# found online - removes the whitespace around the plot but not the external whitespace
  theme(plot.margin=grid::unit(c(0,0,0,0), "mm")) 

p
Run Code Online (Sandbox Code Playgroud)

r spatial ggplot2 r-sf

7
推荐指数
1
解决办法
2102
查看次数