标签: geography

多个纬度/经度点的半径

我有一个程序,它将lat/long点数组作为输入.我需要对该数组执行检查以确保所有点都在某个半径范围内.因此,例如,我允许的最大半径是100英里.给定一个lat/long数组(来自MySQL数据库,可能是10个点可能是10000)我需要弄清楚它们是否都适合半径为100英里的圆.

有点难过如何处理这个问题.任何帮助将不胜感激.

ruby mysql math geography

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

Instagram API实时地理位置订阅 - 请求太少

我通过订阅5个地理位置在Instagram API上实现了实时功能.这些地区几乎覆盖了布加勒斯特地区,所以我想我应该从Instagram的服务器上获得很多动作.

这是我在PHP中实现所有内容的方式(CodeIgniter):

  • 我为所有5个地理位置创建了一个回调页面,用于分析Instagram API中的原始帖子,获取地理ID,然后根据相应的地理ID 请求从该区域上传到地理终点的最近照片
  • 我解析了这个响应并缓存了照片的数据,以便稍后检索
  • 我在http://hipstagram.ro/上显示了最后30个结果

问题是我通过手机从其中一个区域拍摄照片进行了一些测试,有时我的照片显示,有时则没有.实现不会抛出任何错误,但它的工作原理很奇怪.因此......我有几个未回答的问题:

问:我可以丢失请求吗?它在Instagram API文档中说我应该在不到2秒的时间内确认请求.这是我的代码在回调方法(PHP CodeIgniter)中的样子:

if ($_SERVER ['REQUEST_METHOD'] == 'POST') {
    header("Content-Length: 0");
    header("Connection: close");
    flush();

    // do stuff with file_get_contents('php://input')
    // also, get new photos...

    $data   = json_decode (file_get_contents('php://input'));

    if (is_array ($data))
        foreach ($data as $geo) {
            $this->db->query ("LOGGING SOMETHING HERE...");

            // make some a cURL request to the geography endpoint
            // get the photos, save them in the database
            $this->live->updateGeo ($geo->object_id);
        }
}
Run Code Online (Sandbox Code Playgroud)

问:如果我遗漏了请求:

  • 是因为回调时间太长 …

api geography subscription instagram

6
推荐指数
0
解决办法
1923
查看次数

如何使用C#Entity Framework 5 DbGeography空间数据校正多边形环方向

我正在使用新的Entity-Framework 5,使用Spatial数据类型DbGeography作为我的模型的一部分,用于在一个实例中存储POINT,在另一个实例中存储POLYGON.

设置我的POLYGON的值时,所有保存都没有错误,但只有在按顺时针顺序在地图上绘制多边形时才会出现这种情况.如果我以逆时针方向绘制POLGON,我会得到sql级别的错误,表明数据是无效的地理类型.

在对问题进行自己的研究之后,它似乎源于地理数据类型在多边形环方向方面非常严格.最常见的解决方案似乎是将Polygon创建为几何体,然后将其转换为地理类型.

我正在寻找一种C#解决方案,可以在将数据发送到sql之前应用于数据.基本上会自动纠正坐标数组的环方向.

我已经尝试捕获错误,然后通过反转数组重建字符串.这在某些情况下有效,但首先它不可靠,其次捕获错误是一个很大的性能损失.

谢谢克里斯

geography polygon spatial sqlgeography entity-framework-5

6
推荐指数
1
解决办法
3527
查看次数

如何从文本中提取国家?

我使用Python 3(我也安装了Python 2),我想从短文本中提取国家或城市.例如,text = "I live in Spain"text = "United States (New York), United Kingdom (London)".

各国答案:

  1. 西班牙
  2. [美国,英国]

我试图安装,geography但我无法运行pip install geography.我收到此错误:

收集地理位置找不到满足要求地理位置的版本(来自版本:)没有找到地理位置的匹配分布

它看起来geography只适用于Python 2.

我也有geopandas,但我不知道如何使用geopandas从文本中提取所需的信息.

python geography nltk python-3.x

6
推荐指数
1
解决办法
3323
查看次数

在 Python 中创建 xyz 高度数据的曲面图

我正在尝试在 python 中创建一座山的表面图,其中我有一些 xyz 数据。最终的结果应该是这个样子的是。该文件的格式如下:

616000.0 90500.0 3096.712
616000.0 90525.0 3123.415
616000.0 90550.0 3158.902
616000.0 90575.0 3182.109
616000.0 90600.0 3192.991
616025.0 90500.0 3082.684
616025.0 90525.0 3116.597
616025.0 90550.0 3149.812
616025.0 90575.0 3177.607
616025.0 90600.0 3191.986
Run Code Online (Sandbox Code Playgroud)

等等。第一列代表x坐标,中间一列代表y坐标,以及z属于xy坐标的高度。

我使用读入数据pandas,然后将列转换为单独的x, y, z NumPy1D 数组。到目前为止,我设法创建了一个简单的 3D 散点图,其中for循环遍历每个 1D 数组的每个索引,但这需要很长时间并且看起来效率很低。

我尝试使用scipy.interpolate.griddataand plt.plot_surface,但对于z数据,我总是得到数据应该在二维数组中的错误,但我无法弄清楚为什么或如何它应该是二维数据。我假设鉴于我有 xyz 数据,应该有一种方法可以简单地从中创建一个表面。有没有简单的方法?

python geography surface topography

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

将矢量轮廓区域(边框)转换为栅格地图(像素网格)

我有一张地图,按世界地图上的国家/地区的边界(轮廓)划分为多个地区.每个区域都有一定的表面覆盖等级S(例如0表示水,0.03表示草...).边界定义如下:

  • S的两侧是什么值(一侧为0.03,另一侧为0.0,在下面的示例中为0.0)
  • 边界的构成点数(下例中n = 7),和
  • n个坐标对(x,y).

这是一个例子.

0.0300      0.0000           7
2660607.5   6332685.5   2660565.0   6332690.5   2660541.5   6332794.5 
2660621.7   6332860.5   2660673.8   6332770.5   2660669.0   6332709.5 
2660607.5   6332685.5
Run Code Online (Sandbox Code Playgroud)

我想使一个栅格图,其中每个像素具有的值小号对应于其中的像素的中心落在该区域.

请注意,边框表示S中的步骤更改.S的各种值代表离散类别(例如草或水),而不是可以平均的值(即没有湿草!).

另请注意,并非所有边框都是闭环,如上例所示.这有点像国界:例如,美国 - 加拿大边界不是一个封闭的环路,而是一条线在两端连接着另外两个边界:加拿大海洋和美国 - 海洋"边界".(尽管如此,确实存在闭环边界!)

有人能指出我能做到这一点的算法吗?我不想重新发明轮子!

algorithm geography raster geospatial

5
推荐指数
2
解决办法
1852
查看次数

哪种方法更好以获得方向?

我想获得 Android 方面的指导。有两种方法。

一是方向传感器。data value[0] 的值是方位角:绕 z 轴的磁北方向与 y 轴之间的角度(0 到 359)。0=北,90=东,180=南,270=西。

另一个是GPS。我可以使用 android.location.Location.getBearing() 来获取以真北以东的度数的行进方向。

我同时使用这两种方法,发现值相差很大。例如,方向传感器的值为20,而GPS方位的值为340,为什么会有差异?哪个更好?

顺便说一句,这种差异与磁北和真北之间的差异有关吗?在地理上,它们并不相同。

gps android geography sensors

5
推荐指数
1
解决办法
2614
查看次数

空间结果选项卡显示:一个或多个空间对象太大而无法显示

我已将国​​家/地区边界保存在 sql server 2012 中作为 geojson 文件中的地理数据。

\n\n

事实证明,当我查询所有管理级别为 2 的边界时,并非所有多边形都显示在“空间结果”选项卡中。

\n\n

显然,这个问题不仅限于 2 级管理员,其他级别也会受到影响。我将使用奥地利管理员级别 2作为示例。

\n\n

我收到的错误消息是:“一个或多个空间对象太大而无法显示。请优化您的查询”。\n在此输入图像描述

\n\n

正如您所看到的,奥地利(\xc3\x96sterreich) 存在于查询结果中,但不存在于“空间结果”选项卡中:\n在此输入图像描述

\n\n

这是我的查询:

\n\n
SELECT TOP 10 [Id]\n      ,[AdminLevel]\n      ,[Name]\n      ,[CountryId]\n      ,[OpenstreetmapId]\n      ,[BoundaryPolygon]\n  FROM [WorldLocation].[dbo].[GeographyBoundary]\nWHERE [AdminLevel] = 2\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题:

\n\n
    \n
  1. 在空间结果选项卡中显示错误消息的问题的原因是什么?
  2. \n
  3. 我该如何修复该错误?
  4. \n
  5. 我可以写一个查询来解决这个问题吗?
  6. \n
\n

gis geography polygon sql-server-2012

5
推荐指数
1
解决办法
1267
查看次数

在 Godot 中的球体表面生成国家形状的几何图形

我目前正在 Godot 中开发一个游戏,该游戏涉及渲染地球上的国家/地区。我之前对 Godot 的经验很少,但过去曾尝试过。

我将来自 Natural Earth 的这些数据用于国家边界,并成功地使用线网格将其显示在地球上。数据最初是 shapefile 格式,但我使用mapshaper.org将其转换为 GeoJSON 。

图片

数据基本上归结为以纬度和经度给出的点列表,然后我将其转换为 3d 点并使用 SurfaceTool 创建网格。

但是,我无法为网格生成实际表面。首先,我无法找到一个内置函数来根据这些数据生成三角形网格。我研究了许多解决方案,包括使用内置的 Mesh.PRIMITIVE_TRIANGLE_FAN 格式,该格式不适用于凹面形状。

我研究了三角剖分算法,例如 delaunay 三角剖分,但在实现它们方面收效甚微。

我目前的计划是使用二维数据(x,y = 经度,纬度)生成一个三角形网格,并将其投影到球体表面。为了产生曲面,我将在网格中包含球体本身的顶点(示例)。

我想知道如何根据这些数据构建三角形网格。本质上,我需要一个可以做以下事情的算法:

  1. 从凹多边形(国家边界)创建三角形网格
  2. 将网格连接到此多边形内的一系列点
  3. 允许多边形内的孔(用于湖泊等)

是我正在寻找的结果示例。

再说一次,我对戈多很陌生,我可能把事情复杂化了。如果有更简单的方法来渲染地球上的国家/地区,请告诉我。

这是我当前的代码:

extends Node

export var radius = 1
export var path = "res://data/countries.json"

func coords(uv):
    return (uv - Vector2(0.5, 0.5)) * 360

func uv(coords):
    return (coords / 360) + Vector2(0.5, 0.5)

func sphere(coords, r):
    var angles = coords / …
Run Code Online (Sandbox Code Playgroud)

geography mesh triangulation godot

5
推荐指数
1
解决办法
395
查看次数

SQL Server 地理测试一个点是否在边界内 - STWithin() 做什么?

我正在测试各种 SQL 地理类型方法 - 具体来说,我想了解STContains()STWithin().

根据文档:

StWithin() - 如果地理实例在空间上位于另一个地理实例内,则返回 1;

STContains() - 指定调用 geography 实例是否在空间上包含传递给该方法的 geography 实例。

我在微软总部周围创建了一个简单的 1 km x 1 km POLYGON(实际上是一个正方形),从视觉上看,它看起来像这样:

地理边界与中心点

使用的数据点如下:

Center point: 47.6423318, -122.1391189

Polygon (Square) corner points:

SE: 47.6378402235794, -122.13244353271
NE: 47.6468233764206, -122.13244353271
NW: 47.6468233764206, -122.14577646729
SW: 47.6378402235794, -122.14577646729
Run Code Online (Sandbox Code Playgroud)

POLYGON 声明(使用左手规则)如下,并检查是否有效:

DECLARE @bounds geography;
SET @bounds = geography::STPolyFromText('POLYGON((-122.13244353271 47.6378402235794, -122.13244353271 47.6468233764206, -122.14577646729 47.6468233764206, -122.14577646729 47.6378402235794, -122.13244353271 47.6378402235794))', 4326 );

SELECT @bounds.STIsValid() AS 'STIsValid', @bounds.STIsClosed() AS 'STIsClosed';
Run Code Online (Sandbox Code Playgroud)

SQL 返回:

STIsValid   STIsClosed …
Run Code Online (Sandbox Code Playgroud)

sql-server geography

5
推荐指数
1
解决办法
1201
查看次数