标签: spatial

联合Postgres中的GeomUnion等SQL Server表中的所有几何体

只是为了澄清前面:我说的是联合几何,而不是SQL关键字UNION.

我正在尝试将Postgres中的一些空间数据与PostGIS一起移动到SQL Server 2008.直到我看到这样的语句之后才好了:

SELECT GeomUnion(the_geom) FROM some_table
Run Code Online (Sandbox Code Playgroud)

这个联合该列中的所有几何体并将其作为一个结果返回(类似于COUNT工作方式).据我所知,SQL Server只具有将STUnion一个几何与另一个几何结合的功能.有没有办法做类似于Postgres的方式?

如果它有帮助,该STUnion功能的工作方式如下:

SELECT first_geometry_column.STUnion(second_geometry_column) FROM some_table
Run Code Online (Sandbox Code Playgroud)

sql spatial sql-server-2008

11
推荐指数
3
解决办法
1万
查看次数

内部的SQL Spatial多边形

我允许用户通过点击绘制在Silverlight中绘制多边形.然后我遍历这些点,将它们转换为经度和纬度,然后保存到SQL(在一geography列中).

问题在于,由于世界是圆形的,所有这一切,只有当用户顺时针绘制时它才有效.否则它会尝试使多边形在世界范围内正确并失败.

那我该怎么做呢?我是否必须弄清楚他们正在绘制哪种方式,如果是这样的话?

spatial .net-4.0 sql-server-2008

11
推荐指数
1
解决办法
3381
查看次数

寻找可视化多维数据的库/工具

我正在使用Python试图分析大量的经验测量.本质上,我有两个函数转换经验数据,这些数据也需要3个'计数'参数 - 并在每个配置中返回一系列浮点数.我期待(希望)在选择适当的参数时看到一些有趣的模式出现.我预计模式可能在为每个函数返回的序列之间是相对的 - 和/或与参数中的某种模式相关.如果它是相关的,3'计数'参数大致对应于:

  • 基础数据上的"窗口大小",用于计算摘要统计信息
  • 用于计算单个汇总统计量的多个连续窗口(即更大空间或更高时间精度之间的权衡)
  • "最小年龄" - 基础数据历史记录的偏移量.

摘要统计信息(为每个参数配置生成浮动的结果序列)非常重要,但对所有三个参数都是独立敏感的.

我对可视化技术感兴趣 - 适合RAD/ad-hoc查询,这将帮助我试验这个多维数据.

到目前为止,我已经使用MatPlotLib进行了修改,但发现限制生成两个2/3维度的图表,以批处理的方式使调查非常繁琐.理想情况下,我会找到一个工具,允许我可视化两个以上的维度......也许允许我在交互式GUI中的维度之间切换实时.

我非常感谢任何可视化专家提供的关于我应该研究的合适工具的提示 - 理想情况是与我现有的Python函数集成 - 或者用其他语言.我特别喜欢听到类似可视化问题的成功轶事.

编辑添加:我正在考虑的一种可能的方法是在2或3D图上使用动画(捕捉另一个维度......留下1或2进行手动选择)......虽然我找不到好的工具来帮助我实现这一目标.

python graphics visualization graph spatial

11
推荐指数
2
解决办法
3517
查看次数

如何持久计算GEOMETRY或GEOGRAPHY列

我正在尝试在SQL Server 2008下创建一个包含GEOMETRY列及其计算变量的表.

考虑下表,计算列返回缓冲几何:

CREATE TABLE [dbo].[Test] (
    [Geometry]      GEOMETRY    NOT NULL,
    [Buffer]        FLOAT       NOT NULL,
    [BufferedGeometry] AS ([Geometry].STBuffer([Buffer])) PERSISTED
);
Run Code Online (Sandbox Code Playgroud)

这个问题是导致以下错误:

消息4994,级别16,状态1,行2表'Test'中的计算列'BufferedGeometry'不能保留,因为列类型'geometry'是非字节顺序的CLR类型.

我有搜索BOL和网络,似乎无法找到我的问题的解决方案.我真的希望它能够持久化,以便我可以有效地对其进行索引.我可以在代码中设置它,但随后我有可能出现不一致的数据,因为我在某个时间点需要这两个值.

有人玩这个并知道解决方案或解决方法吗?

更新:Microsoft已在SQL Server 2012中添加此功能.

sql-server spatial sql-server-2008

10
推荐指数
1
解决办法
2265
查看次数

获取S4对象的插槽值?

所以我在R中有一个spatialpolygons对象; 但我不确定为什么我无法从中检索"区域"槽.

这是我的R会议:

> spatialpolygons
An object of class "SpatialPolygons"
Slot "polygons":
[[1]]
An object of class "Polygons"
Slot "Polygons":
[[1]]
An object of class "Polygon"
Slot "labpt":
[1] 20.50516 57.72918

Slot "area":
[1] 36.85484

Slot "hole":
[1] FALSE

Slot "ringDir":
[1] 1

Slot "coords":
         [,1]     [,2]
[1,] 16.48438 59.73633
[2,] 22.59277 61.14258
[3,] 24.74609 55.03418
[4,] 17.49512 55.12207
[5,] 16.48438 59.73633



Slot "plotOrder":
[1] 1

Slot "labpt":
[1] 20.50516 57.72918

Slot "ID":
[1] "myMultiPolygons"

Slot "area":
[1] 36.85484



Slot …
Run Code Online (Sandbox Code Playgroud)

r spatial s4

10
推荐指数
2
解决办法
1万
查看次数

拆分单个SpatialPolygons对象的多边形部分

在R中,我有SpatialPolygons包含几百个多边形的单个对象(即多多边形).我想将此SpatialPolygons对象拆分为一个列表Polygons(即孔应保持附加到父多边形).

知道怎么做吗?

编辑:

使用sp包中提供的以下示例:

# simple example, from vignette("sp"):
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)

Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
Run Code Online (Sandbox Code Playgroud)

然后跑out = lapply(SpP@polygons, slot, "Polygons").我得到三个列表Polygons(即Srs1,Srs2,Srs3).

但是,我试图解决的情况与此示例略有不同.SpatialPolygons我试图拆分的对象是使用gUnaryUnion函数(在RGEOS包中)完成几何联合的结果.如果我申请out <- lapply(merged.polygons@polygons, slot, "Polygons"),我会获得一个唯一的Polygon对象列表(nb不是Polygons …

r spatial polygons

10
推荐指数
2
解决办法
6823
查看次数

带R的传单:添加文本标签

此代码取自此页面:

library(leaflet)
leaflet(data = quakes[1:20,]) %>% addTiles() %>%
  addMarkers(~long, ~lat, popup = ~as.character(mag))
Run Code Online (Sandbox Code Playgroud)

而不是标记,有没有办法mag作为文本标签绘图?

r data-visualization spatial geospatial leaflet

10
推荐指数
2
解决办法
1万
查看次数

时间序列数据的主成分分析(PCA):空间和时间模式

假设我有从1951年到1980年的100个站点的年降水量数据.在一些论文中,我发现人们将PCA应用于时间序列,然后绘制空间载荷图(值为-1到1),并绘制时间序列个人电脑 例如,https://publicaciones.unirioja.es/ojs/index.php/cig/article/view/2931/2696中的图6 是PC的空间分布.

prcomp在R中使用函数,我想知道我怎么能做同样的事情.换句话说,如何从prcomp函数的结果中提取"空间模式"和"时间模式" ?谢谢.

set.seed(1234)
rainfall = sample(x=100:1000,size = 100*30,replace = T)
rainfall=matrix(rainfall,nrow=100)
colnames(rainfall)=1951:1980
PCA = prcomp(rainfall,retx=T)
Run Code Online (Sandbox Code Playgroud)

或者,有真实的数据在https://1drv.ms/u/s!AnVl_zW00EHegxAprS4s7PDaYQVr

r spatial temporal pca

10
推荐指数
1
解决办法
1万
查看次数

R叠加点和具有一定程度公差的多边形

使用R,我想覆盖一些空间点和多边形,以便为点分配​​我考虑的地理区域的一些属性.

我最常做的是使用命令over的的sp包.我的问题是,我正在处理全球范围内发生的大量地理参考事件,在某些情况下(特别是在沿海地区),经度和纬度组合略微落在国家/地区边界之外.这是一个基于这个非常好的问题的可重复的例子.

## example data
set.seed(1)
library(raster)
library(rgdal)
library(sp)
p <- shapefile(system.file("external/lux.shp", package="raster"))
p2 <- as(0.30*extent(p), "SpatialPolygons")
proj4string(p2) <- proj4string(p)
pts1 <- spsample(p2-p, n=3, type="random")
pts2<- spsample(p, n=10, type="random")
pts<-rbind(pts1, pts2)

## Plot to visualize
plot(p, col=colorRampPalette(blues9)(12))
plot(pts, pch=16, cex=.5,col="red", add=TRUE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

# overlay
pts_index<-over(pts, p)

# result
pts_index

#>     ID_1       NAME_1 ID_2           NAME_2 AREA
#>1    NA         <NA> <NA>             <NA>   NA
#>2    NA         <NA> <NA>             <NA>   NA
#>3    NA         <NA> <NA>             <NA>   NA
#>4     1 …
Run Code Online (Sandbox Code Playgroud)

r spatial r-sp r-sf

10
推荐指数
2
解决办法
1293
查看次数

保留UnionAggregate中的起始点

DECLARE @Geom TABLE 
( 
   shape geometry, 
   shapeType nvarchar(50) 
); 

INSERT INTO @Geom(shape,shapeType) 
VALUES('LINESTRING(1 2, 3 4)', 'A'), 
('LINESTRING(3.2 4, 7 8)', 'B'); 

SELECT *
FROM @Geom

SELECT geometry::UnionAggregate(shape).ToString(), geometry::UnionAggregate(shape)
FROM @Geom;

Run Code Online (Sandbox Code Playgroud)

输出的WKT是

MULTILINESTRING ((7 8, 3.2 4), (3 4, 1 2))

当我想要的时候

MULTILINESTRING ((1 2, 3 4), (3.2 4, 7 8))

其中"A"和"B"行的开始应该是(1 2)(3.2 4)尊敬.

这种行为UnionAggregate似乎并不关心几何的"方向",以便维持A联合B和B联合A是相同的结果.不过,我想保留的开始/终点,因为我unioning街道几何,我希望所有的线串在其原来的方向去了.

这里讨论这个问题:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/89e95366-3649-4294-a0bc-f3921598157f/union-of-linestrings-and-reversing-direction?forum= sqlspatial

他们似乎建议在检查最终结果的可能解决方案,但我不清楚如何做到这一点.它是在一个链接的线程中暗示的

MultiLineString始终表示距离原点最远的点的图形.

我不清楚这究竟意味着什么,但我认为我不能假设UnionAggregate的结果总是与我想要的相反

如果很难知道方向意图,那么我可以添加M个度量,其中方向应该跟随增加的M值.

假设我有一种方法可以反转积分,我该如何解决这个问题呢?

我找到了一个模拟STUnionZ和M测量的附加支持的功能:http://www.spatialdbadvisor.com/files/SQLServer.html#robo48但是注意到"他们的方向可能会改变(例如,开始/起点关系) ).",这是我想要避免的.

t-sql sql-server geometry spatial sql-server-2017

10
推荐指数
2
解决办法
304
查看次数