标签: spatial

SQL Server 2008空间数据功能是否对映射查询有用?

我有一个应用程序,基本上我有一个巨大的表(1亿条记录)的信息,每行包含一个lat/long值.

我一直在查询这个表,以获得适合某个点的半径范围内的所有记录.例如,"所有记录在5.89288,-104.919434之间的5英里内"

为此,我有一个Lat/Long列的索引,我得到了点的"边界",然后丢弃了我的ASP.Net应用程序中所有落在圆圈之外的点,因为那样更快而不是在SQL Server中进行循环计算.
注意:这是关于美国的所有数据,所以我认为地球是平坦的,我的计算,这足以满足我的需要.

现在,Lat/Long索引的主要问题是作为点的"正方形",并且因为我试图找到"在x和y之间拉"和"在x和y之间长",它实际上不是真的超级有效地使用索引,因为如果我在搜索"一行"点,就可以.

我一直在阅读SQL 2008的空间功能,但我还没有找到足够的具体信息来了解这对我是否有用.

所以问题是:SQL 2008是否有某种不同类型的索引可以使这种特定类型的查询比SQL 2005更快?

indexing performance spatial sql-server-2008

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

从Rails访问PostGIS空间数据

我需要使用Rails应用程序中的现有PostGIS数据库.到目前为止,我能够很好地访问数据库,GeoRuby很好地将'geom'列转换为Point对象.

我正在寻找的是一种在这些表上执行类似ActiveRecord的查询的简单方法,例如

Poi.find_within_radius(...)
Run Code Online (Sandbox Code Playgroud)

或类似的空间查询,如距离计算等.人.

我尝试了几种geokit组合,附带了rails插件,但我确信在ruby/rails宇宙中必须有更好的东西.任何提示?

postgis ruby-on-rails spatial

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

生成像SpatialKey这样的密度/热图

SpatialKey会生成一些非常好看的热图,我们正在研究为内部项目执行此操作所涉及的内容,以便可视化大量的点.我正在寻找关于从何处入手的一些想法的反馈(这只是一个非常有趣的问题).

SpatialKey热图http://img697.imageshack.us/img697/7964/resolutiondays508x17550.jpg

我们知道他们正在使用Flash,从我们可以看出,热图是交互式的,而不是从平铺服务器渲染.我们对如何实现这一点的第一个猜测是服务器为他们的Flash客户端提供一个网格 - 每个单元格都有一个由服务器计算的计数.然后,Flash客户端根据网格中的单元格值进行一些插值,以生成您在上面看到的漂亮输出.

在这个阶段,我只对如何有效地在服务器端生成网格感兴趣(如果我们对它们的实现的假设是正确的).它似乎涉及:

  1. 执行查询当前在地图边界中的内容
  2. 为这些边界内的每个单元格执行聚合子查询(执行上面示例中的计数,求和或平均值).

以理智的网格分辨率在多个缩放级别执行此操作,看起来您需要自定义空间索引才能提高效率.

任何接受解释替代路线的人?如果它很重要,我们习惯于将我们的数据存储在PostgreSQL中,并使用PostGIS进行空间索引,但我愿意尝试任何东西.

maps postgis spatial geospatial heatmap

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

如何在MySQL中为空间列定义空多边形?

我正在尝试在表column(bbox polygon default NULL)上创建空间索引,但得到错误:All parts of a SPATIAL index must be NOT NULL.

问题是我认为有些行会包含NULL.问题是:有没有办法用默认的空多边形声明列?

mysql database-design spatial

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

使用spplot过度绘制两个SpatialPolygonsDataFrame

我有一堆数据,我在县一级绘制,没有边界.我想加入州界.我有一个状态shapefile(多边形),但spplot似乎没有任何方法可以添加到上一个地图之上.有没有办法做到这一点,没有重写面板功能,以采取两个SPDF(这似乎非常专业的可能是其他人的问题)?

这是一个可重复的例子:

library(sp)
Srs1 = Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))), "s1")
Srs2 = Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "s2")

county <- SpatialPolygonsDataFrame( SpatialPolygons(list(Srs1,Srs2)), 
                                  data.frame( z=1:2, row.names=c("s1","s2") ) )

SrsA <- Polygons(list(Polygon(cbind(c(3,5,5,1,3),c(3,4,6,5,3)))),"sA")
state <- SpatialPolygonsDataFrame( SpatialPolygons(list(SrsA)),
                                  data.frame( z=1,row.names="sA" ))

spplot( county, zcol="z",col=NA )
spplot( state, add=TRUE ) # Note the add=TRUE does nothing here, but that's the spirit of what I want to accomplish
Run Code Online (Sandbox Code Playgroud)

r spatial

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

SpatialLinesDataFrame:如何计算min.点与线之间的距离

我有一个带有街道的SpatialLinesDataFrame,我有一个GPS坐标列表.我需要做的是为每个GPS坐标输出10个最近的街道名称.

R中是否有一个函数/包可以计算一行和一个SpatialLinesDataFrame的点之间的距离?我看不到任何对'sp'有帮助的东西.

有一个相关的问题:计算R中多边形和点之间的距离,但我想找到一个线对象和一个点之间的距离,而不是多边形/点,点/点.

gis r spatial

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

实体框架6和空间数据

我有空间数据类型的数据库.我使用数据库第一模型和实体框架6.0.2和.NET 4.5.当我尝试使用生成的类时,我得到以下错误:

指定的架构无效.错误:未加载关系"Name_FK1",因为"Model.TypeB"类型不可用.以下信息可用于解决先前的错误:类型"Data.TypeB"上的属性"Position"具有属性类型"System.Data.Spatial.DbGeography",该属性类型无法映射到基本类型.

我使用空间类型的所有表都列出了相同的错误.'Name_FK1'是外键关系.

我究竟做错了什么?

谢谢您的帮助.

c# entity-framework spatial

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

将SpatialPointsDataFrame转换为R中的SpatialLinesDataFrame

我正在使用HURDAT数据集绘制飓风轨迹.我目前在R中生成了一个SpatialPointsDataFrame对象,它在2004年看起来像这样.

    > str(cluster.2004.sdf)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 2693 obs. of  4 variables:
  .. ..$ Sid      : int [1:2693] 1331 1331 1331 1331 1331 1331 1331 1331 1331 1331 ...
  .. ..$ clusterid: num [1:2693] 2 2 2 2 2 2 2 2 2 2 ...
  .. ..$ name     : Factor w/ 269 levels "","ABBY      ",..: 6 6 6 6 6 6 6 6 6 6 ...
  .. ..$ WmaxS    : num [1:2693] 78.9 …
Run Code Online (Sandbox Code Playgroud)

r spatial

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

与geom_tile()结合的coord_map()非常慢

我正在使用ggplot2绘制一些半球场,当我尝试将它们投影到立体投影时,渲染需要很长时间.这是一个最小的例子:

lat <- seq(-87.159, -2, by = 3.7)
lon <- seq(0, 360, by = 3.75)
month <- 1:12

gdata <- expand.grid(lat = lat, lon = lon, month = month)
gdata$z <- rnorm(nrow(gdata))

g <- ggplot(gdata, aes(lon, lat)) +
    geom_tile(aes(fill = z)) +
    facet_wrap(~month, ncol = 4) 

benchplot(g)
Run Code Online (Sandbox Code Playgroud)

我明白了:

       step user.self sys.self elapsed
1 construct     0.000    0.000   0.000
2     build     0.156    0.004   0.162
3    render     0.976    0.016   0.990
4      draw     0.464    0.000   0.464
5     TOTAL     1.596    0.020   1.616
Run Code Online (Sandbox Code Playgroud)

如果我添加一个投影 coord_map()

benchplot(g …
Run Code Online (Sandbox Code Playgroud)

r spatial ggplot2 r-raster

7
推荐指数
0
解决办法
347
查看次数

在C#中将UTM坐标解析为DBGeography

我正在用C#编写WinForms应用程序.我需要确保DatarowDatatable的距离不超过100公里.每行在单独的DataColumns中具有UTM区域,东区和北区.所有坐标都使用相同的数据,但有些具有不同的区域(否则,我会使用pythag数学,因为UTM以米为单位).到目前为止,我正在使用以下代码来执行此操作,但似乎我的DbGeography.PointFromText方法工作得不正常(请参阅代码中的*),因为当代码到达带有'**'的代码行时在它的开头,我得到一个错误说"24201:纬度值必须介于-90和90度之间".我也尝试过:

dtTrap.Rows[i]["TrapGeog"] = DbGeography.PointFromText(pointWellKnownText: "POINT M(" + dtTrap.Rows[i][intEastingIndex].ToString() + " " + dtTrap.Rows[i][intNorthingIndex].ToString() + " " + dtTrap.Rows[i][Zone].ToString() + ")", coordinateSystemId: SRID);
Run Code Online (Sandbox Code Playgroud)

只是让它抱怨"没有列#17"(17是我的UTM区域).

我发现使用这些东西的文档很少......据我所知,我的SRID是正确的(我从这个站点中取出它们).我之前使用Lat + Longs做过这种事情,并且效果非常好.我找不到UTM的正确语法.

using System.Data.Entity.Spatial;
...
DataColumn dcGeog = new DataColumn("TrapGeog", typeof(DbGeography));
dtTrap.Columns.Add(dcGeog);
byte Zone;
Int16 SRID;
for (int i = 0; i < dtTrap.Rows.Count; ++i)
{
    if (dtTrap.Rows[i][intZoneIndex] != null
    && dtTrap.Rows[i][intNorthingIndex] != null
    && dtTrap.Rows[i][intEastingIndex] != null
    && byte.TryParse(dtTrap.Rows[i][intZoneIndex].ToString(), out Zone) == true)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

c# spatial

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