我有一个程序,它将lat/long点数组作为输入.我需要对该数组执行检查以确保所有点都在某个半径范围内.因此,例如,我允许的最大半径是100英里.给定一个lat/long数组(来自MySQL数据库,可能是10个点可能是10000)我需要弄清楚它们是否都适合半径为100英里的圆.
有点难过如何处理这个问题.任何帮助将不胜感激.
我通过订阅5个地理位置在Instagram API上实现了实时功能.这些地区几乎覆盖了布加勒斯特地区,所以我想我应该从Instagram的服务器上获得很多动作.
这是我在PHP中实现所有内容的方式(CodeIgniter):
问题是我通过手机从其中一个区域拍摄照片进行了一些测试,有时我的照片显示,有时则没有.实现不会抛出任何错误,但它的工作原理很奇怪.因此......我有几个未回答的问题:
问:我可以丢失请求吗?它在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)
问:如果我遗漏了请求:
我正在使用新的Entity-Framework 5,使用Spatial数据类型DbGeography作为我的模型的一部分,用于在一个实例中存储POINT,在另一个实例中存储POLYGON.
设置我的POLYGON的值时,所有保存都没有错误,但只有在按顺时针顺序在地图上绘制多边形时才会出现这种情况.如果我以逆时针方向绘制POLGON,我会得到sql级别的错误,表明数据是无效的地理类型.
在对问题进行自己的研究之后,它似乎源于地理数据类型在多边形环方向方面非常严格.最常见的解决方案似乎是将Polygon创建为几何体,然后将其转换为地理类型.
我正在寻找一种C#解决方案,可以在将数据发送到sql之前应用于数据.基本上会自动纠正坐标数组的环方向.
我已经尝试捕获错误,然后通过反转数组重建字符串.这在某些情况下有效,但首先它不可靠,其次捕获错误是一个很大的性能损失.
谢谢克里斯
我使用Python 3(我也安装了Python 2),我想从短文本中提取国家或城市.例如,text = "I live in Spain"
或text = "United States (New York), United Kingdom (London)"
.
各国答案:
我试图安装,geography
但我无法运行pip install geography
.我收到此错误:
收集地理位置找不到满足要求地理位置的版本(来自版本:)没有找到地理位置的匹配分布
它看起来geography
只适用于Python 2.
我也有geopandas
,但我不知道如何使用geopandas从文本中提取所需的信息.
我正在尝试在 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
NumPy
1D 数组。到目前为止,我设法创建了一个简单的 3D 散点图,其中for
循环遍历每个 1D 数组的每个索引,但这需要很长时间并且看起来效率很低。
我尝试使用scipy.interpolate.griddata
and plt.plot_surface
,但对于z
数据,我总是得到数据应该在二维数组中的错误,但我无法弄清楚为什么或如何它应该是二维数据。我假设鉴于我有 xyz 数据,应该有一种方法可以简单地从中创建一个表面。有没有简单的方法?
我有一张地图,按世界地图上的国家/地区的边界(轮廓)划分为多个地区.每个区域都有一定的表面覆盖等级S(例如0表示水,0.03表示草...).边界定义如下:
这是一个例子.
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的各种值代表离散类别(例如草或水),而不是可以平均的值(即没有湿草!).
另请注意,并非所有边框都是闭环,如上例所示.这有点像国界:例如,美国 - 加拿大边界不是一个封闭的环路,而是一条线在两端连接着另外两个边界:加拿大海洋和美国 - 海洋"边界".(尽管如此,确实存在闭环边界!)
有人能指出我能做到这一点的算法吗?我不想重新发明轮子!
我想获得 Android 方面的指导。有两种方法。
一是方向传感器。data value[0] 的值是方位角:绕 z 轴的磁北方向与 y 轴之间的角度(0 到 359)。0=北,90=东,180=南,270=西。
另一个是GPS。我可以使用 android.location.Location.getBearing() 来获取以真北以东的度数的行进方向。
我同时使用这两种方法,发现值相差很大。例如,方向传感器的值为20,而GPS方位的值为340,为什么会有差异?哪个更好?
顺便说一句,这种差异与磁北和真北之间的差异有关吗?在地理上,它们并不相同。
我已将国家/地区边界保存在 sql server 2012 中作为 geojson 文件中的地理数据。
\n\n事实证明,当我查询所有管理级别为 2 的边界时,并非所有多边形都显示在“空间结果”选项卡中。
\n\n显然,这个问题不仅限于 2 级管理员,其他级别也会受到影响。我将使用奥地利管理员级别 2作为示例。
\n\n我收到的错误消息是:“一个或多个空间对象太大而无法显示。请优化您的查询”。\n
正如您所看到的,奥地利(\xc3\x96sterreich) 存在于查询结果中,但不存在于“空间结果”选项卡中:\n
这是我的查询:
\n\nSELECT 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我目前正在 Godot 中开发一个游戏,该游戏涉及渲染地球上的国家/地区。我之前对 Godot 的经验很少,但过去曾尝试过。
我将来自 Natural Earth 的这些数据用于国家边界,并成功地使用线网格将其显示在地球上。数据最初是 shapefile 格式,但我使用mapshaper.org将其转换为 GeoJSON 。
数据基本上归结为以纬度和经度给出的点列表,然后我将其转换为 3d 点并使用 SurfaceTool 创建网格。
但是,我无法为网格生成实际表面。首先,我无法找到一个内置函数来根据这些数据生成三角形网格。我研究了许多解决方案,包括使用内置的 Mesh.PRIMITIVE_TRIANGLE_FAN 格式,该格式不适用于凹面形状。
我研究了三角剖分算法,例如 delaunay 三角剖分,但在实现它们方面收效甚微。
我目前的计划是使用二维数据(x,y = 经度,纬度)生成一个三角形网格,并将其投影到球体表面。为了产生曲面,我将在网格中包含球体本身的顶点(示例)。
我想知道如何根据这些数据构建三角形网格。本质上,我需要一个可以做以下事情的算法:
这是我正在寻找的结果示例。
再说一次,我对戈多很陌生,我可能把事情复杂化了。如果有更简单的方法来渲染地球上的国家/地区,请告诉我。
这是我当前的代码:
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) 我正在测试各种 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) geography ×10
polygon ×2
python ×2
algorithm ×1
android ×1
api ×1
geospatial ×1
gis ×1
godot ×1
gps ×1
instagram ×1
math ×1
mesh ×1
mysql ×1
nltk ×1
python-3.x ×1
raster ×1
ruby ×1
sensors ×1
spatial ×1
sql-server ×1
sqlgeography ×1
subscription ×1
surface ×1
topography ×1