只是为了澄清前面:我说的是联合几何,而不是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) 我允许用户通过点击绘制在Silverlight中绘制多边形.然后我遍历这些点,将它们转换为经度和纬度,然后保存到SQL(在一geography列中).
问题在于,由于世界是圆形的,所有这一切,只有当用户顺时针绘制时它才有效.否则它会尝试使多边形在世界范围内正确并失败.
那我该怎么做呢?我是否必须弄清楚他们正在绘制哪种方式,如果是这样的话?
我正在使用Python试图分析大量的经验测量.本质上,我有两个函数转换经验数据,这些数据也需要3个'计数'参数 - 并在每个配置中返回一系列浮点数.我期待(希望)在选择适当的参数时看到一些有趣的模式出现.我预计模式可能在为每个函数返回的序列之间是相对的 - 和/或与参数中的某种模式相关.如果它是相关的,3'计数'参数大致对应于:
摘要统计信息(为每个参数配置生成浮动的结果序列)非常重要,但对所有三个参数都是独立敏感的.
我对可视化技术感兴趣 - 适合RAD/ad-hoc查询,这将帮助我试验这个多维数据.
到目前为止,我已经使用MatPlotLib进行了修改,但发现限制生成两个2/3维度的图表,以批处理的方式使调查非常繁琐.理想情况下,我会找到一个工具,允许我可视化两个以上的维度......也许允许我在交互式GUI中的维度之间切换实时.
我非常感谢任何可视化专家提供的关于我应该研究的合适工具的提示 - 理想情况是与我现有的Python函数集成 - 或者用其他语言.我特别喜欢听到类似可视化问题的成功轶事.
编辑添加:我正在考虑的一种可能的方法是在2或3D图上使用动画(捕捉另一个维度......留下1或2进行手动选择)......虽然我找不到好的工具来帮助我实现这一目标.
我正在尝试在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中添加此功能.
所以我在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中,我有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 …
此代码取自此页面:
library(leaflet)
leaflet(data = quakes[1:20,]) %>% addTiles() %>%
addMarkers(~long, ~lat, popup = ~as.character(mag))
Run Code Online (Sandbox Code Playgroud)
而不是标记,有没有办法mag作为文本标签绘图?
假设我有从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)
使用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) 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但是注意到"他们的方向可能会改变(例如,开始/起点关系) ).",这是我想要避免的.