标签: geospatial

从纬度和经度双倍构造DbGeography点?

我想从纬度和经度双倍构造一个DbGeography点.

我知道我可以将我的双打转换为字符串并使用该DbGeography.FromText方法.

var latitude = 50.0d;
var longitude = 30.0d;

var pointString = string.Format(
    "POINT({0} {1})",
    longitude.ToString(),
    latitude.ToString());

var point = DbGeography.FromText(pointString);
Run Code Online (Sandbox Code Playgroud)

但是将我的双打转换为字符串似乎是浪费,以便DbGeography可以再次将它们解析为双倍.


我试着像这样直接构建DbGeography:

var point = new DbGeography()
{
    Latitude = 50,
    Longitude = 30
};
Run Code Online (Sandbox Code Playgroud)

但纬度和经度属性是只读的.(这是有道理的,因为DbGeography类比单个点处理更多)


所述DbGeography类还提供了一种FromBinary采用一个字节阵列的方法.我不确定如何武装我的纬度和经度加倍到正确格式化的字节数组.

是否有一种更简单的方法来构建纬度和经度的DbGeography实例比顶部的代码加倍?

entity-framework geospatial

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

计算与Java中的纬度/经度坐标相距一定距离的边界框

给定一个坐标(lat,long),我试图计算一个与坐标相距给定距离(例如50km)的方形边界框.所以作为输入我有lat,long和distance,作为输出,我想要两个坐标; 一个是西南(左下角),另一个是东北(右上角).我在这里看到了几个试图用Python解决这个问题的答案,但我特别想找一个Java实现.

为了清楚起见,我打算仅在地球上使用该算法,因此我不需要容纳可变半径.

它不一定非常准确(+/- 20%很好),它只能用于计算小距离(不超过150公里)的边界框.所以我很高兴为一个有效的算法牺牲一些准确性.任何帮助深表感谢.

编辑:我应该更清楚,我真的是在一个正方形,而不是一个圆圈.我知道正方形的中心和沿着正方形周长的各个点之间的距离不是像圆圈一样的恒定值.我猜我的意思是一个正方形,如果你从中心画一条直线到周长上的四个点中的任何一个点,导致一条线垂直于周边的边,那么这4条线的长度相同.

math trigonometry geospatial bounding-box latitude-longitude

36
推荐指数
3
解决办法
4万
查看次数

使用空间点类型在MySQL中存储Lat Lng值

使用的技术:MySQL 5.1和PHP 5.3

我只是为我正在写的网站设计一个新的数据库.我正在寻找现在存储Lat和Lng值的最佳方法.

在过去,我一直在使用DECIMAL并在表单中使用PHP/MySQL select:

SQRT(POW(69.1 * (fld_lat - ( $lat )), 2) + POW(69.1 * (($lon) - fld_lon) * COS(fld_lat / 57.3 ), 2 )) AS distance
Run Code Online (Sandbox Code Playgroud)

找到最近的匹配地点.

开始阅读有关新技术的更多内容我想知道是否应该使用Spatial Extensions.http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html

虽然信息很薄,但对如何存储数据有疑问.我现在使用POINT作为数据类型,而不是使用DECIMAL?

此外,一旦存储为POINT,只是为了从中获取Lat Lng值,以便我想在地图上绘制它或者我是否还应该再次将lat lngs存储为DECIMALS?

我知道我应该使用PostGIS,因为这里的大多数帖子都说我只是不想学习新的数据库!

跟进

我一直在玩新的POINT类型.我已经能够使用以下内容添加Lat Lng值:

INSERT INTO spatialTable (placeName, geoPoint) VALUES( "London School of Economics", GeomFromText( 'POINT(51.514 -0.1167)' ));
Run Code Online (Sandbox Code Playgroud)

然后,我可以使用以下方法从Db返回Lat和Lng值:

SELECT X(geoPoint), Y(geoPoint) FROM spatialTable;
Run Code Online (Sandbox Code Playgroud)

这一切看起来都不错,但距离的计算是我需要解决的问题.显然,MySQL有一个距离函数的占位符,但暂时不会发布.在一些帖子中,我发现我需要做类似下面的事情,但是我认为我的代码有点错误:

SELECT
 placeName,
 ROUND(GLength(
  LineStringFromWKB(
   LineString(
    geoPoint, 
    GeomFromText('POINT(52.5177, -0.0968)')
  )
  )
))
AS distance
FROM spatialTable
ORDER BY distance …
Run Code Online (Sandbox Code Playgroud)

mysql geospatial

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

打开谷歌地图的替代品?

我正在寻找一种谷歌地图的替代方案,它具有丰富的API,但更加开放.这样的事情存在吗?

maps google-maps geolocation geospatial

35
推荐指数
4
解决办法
2万
查看次数

地理空间索引如何运作?

我想知道地理空间索引(例如MongoDB使用的索引)是如何工作的.任何人都可以解释内部使用的数据结构/算法吗?搜索运行的时间复杂度是多少?

资源链接也很棒.

indexing geospatial

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

用于maxdistance和MongoDB的单位?

我试图了解MongoDB和地理空间搜索.基本上我想要的是用户能够查询在距离用户当前位置的设定距离内拍摄的文档(图像).所以我用户正在搜索距离他所在地1公里范围内拍摄的所有图像我尝试使用下面的示例,但我不知道要设置什么作为最大距离值.

db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 }})
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如果我在1公里范围内搜索文件,我将设置为maxdistance?

我完全被困在这里.

geospatial mongodb

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

检测GPS坐标是否落在地图上的多边形内

如标题中所述,目标是有一种方法来检测给定的GPS坐标是否落在多边形内.

多边形本身可以是凸面或凹面.它被定义为一组边矢量和该多边形内的已知点.每个边缘矢量进一步由四个坐标定义,这四个坐标是各个尖端点的纬度和经度以及相对于起始点的方位.

StackOverflow上有一些与此类似的问题,但是它们仅以一般术语和2D平面描述解决方案,而我正在寻找支持WGS 84中纬度/经度对定义的多边形的现有实现.

进行此类碰撞测试的API或服务是什么?

math gps geolocation geospatial coordinates

32
推荐指数
3
解决办法
4万
查看次数

无法加载SqlServerSpatial.dll

我试图在C#.Net项目中使用SqlServer Spatial CLR类型.我想使用SqlGeometry来查询我的数据库中的空间记录.

我在本地计算机上运行Visual Studio 2010中运行的单元测试,命中远程SqlServer计算机.都好.

然后,我将WCF Rest服务发布到我的本地IIS实例,该实例具有与单元测试匹配相同类库的服务,以进行一些空间查询,并且失败.

我收到一个错误说

无法加载DLL SqlServerSpatial.dll:找不到指定的模块.

我用谷歌搜索了这个并找到了许多答案 - 对我来说都没有用.我有:

  • 在GAC中注册了CLR类型
  • 安装64位,后来也安装了32位版本的VC++
  • 尝试了使用不同的Microsoft.SqlServer.Types dll版本的许多变体

我唯一没做过的,坦率地拒绝做的是在实际的SqlServer盒子上安装任何东西.这对我来说似乎没用.

在这一点上,我唯一能想到的是导致这是一个权限问题,因为它在IIS应用程序池中运行,而不是在单元测试中工作的Studio内部.

请注意,在我的项目中,我从不参考错误消息中提到的DLL.那个dll出现在sql box上,但我无法将它添加到工作室,因为它在我尝试时会给出一些消息.我在这里尝试的东西已经用完了.这是90年代dll地狱了.

.net c# sql-server clr geospatial

31
推荐指数
3
解决办法
4万
查看次数

如何使用python计算地球表面多边形的面积?

标题基本上都说明了一切.我需要使用Python计算地球表面多边形内的区域.计算由地球表面任意多边形包围的区域说明了一些内容,但对技术细节仍然模糊:

如果你想用更"GIS"的味道来做这件事,那么你需要为你的区域选择一个度量单位,找到一个保留区域的适当投影(不是所有的).既然你在谈论计算任意多边形,我会使用类似Lambert Azimuthal等面积投影的东西.将投影的原点/中心设置为多边形的中心,将多边形投影到新坐标系,然后使用标准平面技术计算面积.

那么,我如何在Python中执行此操作?

python geometry geolocation geospatial

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

如何在Mongoose Schema中表示MongoDB GeoJSON字段?

MongoDB 2.4允许使用GeoJSON对象和一系列我想要使​​用的简洁函数和索引.

它希望GeoJSON对象以如下格式存储:

loc: {
  type: 'Polygon',
  coordinates: [[[-180.0, 10.0], [20.0, 90.0], [180.0, -5.0], [-30.0, -90.0]]]
}
Run Code Online (Sandbox Code Playgroud)

所以在Mongoose中,人们会认为模式定义如下:

loc: { type: 'string', coordinates: [[['number']]] }
Run Code Online (Sandbox Code Playgroud)

但目前存在两个问题:

  1. 有一个名为"type"的字段搞砸了Mongoose的模式解析,因为它允许在表单字段中定义字段:{type:,index:}等.

  2. Mongoose不喜欢嵌套数组.

解决这个问题的一种方法是简单地使用mongoose.Schema.Types.Mixed,但我觉得必须有更好的方法!

schema geospatial mongoose mongodb geojson

29
推荐指数
4
解决办法
2万
查看次数