我使用了这段代码,但它不起作用:
需要两个gps坐标之间的距离,如41.1212,11.2323英里(Java)
double d2r = (180 / Math.PI);
double distance = 0;
try{
double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
double a =
Math.pow(Math.sin(dlat / 2.0), 2)
+ Math.cos(startpoint.getLat() * d2r)
* Math.cos(endpoint.getLat() * d2r)
* Math.pow(Math.sin(dlong / 2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367 * c;
return d;
} catch(Exception e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 有谁知道Android的GEO位置教程.我不想获得谷歌地图API密钥我只想要一个获取手机位置的活动并将其粘贴在一个变量中,然后我可以决定如何处理它.
干杯,
麦克风.
我想实现一项服务,根据用户的地理坐标,可以检测两个用户是否实时位于同一位置.
为了实时和扩展,我似乎应该使用像Redis这样的分布式内存数据存储.我已经研究过使用geohashing,但问题是彼此接近的点可能并不总是共享相同的哈希前缀.因为我有兴趣找到两个用户是否足够接近他们彼此相邻的位置,所以geohashing可能有点过分.
当然,简单的解决方案就是测试地理坐标对是否落在彼此的小距离内.但AFAIK,Redis和其他内存数据采集器没有地理空间索引来支持这种查找.
实现这个的最佳方法是什么?
我想用python进行blinear插值.
我要插入高度的示例gps点是:
B = 54.4786674627
L = 17.0470721369
Run Code Online (Sandbox Code Playgroud)
使用具有已知坐标和高度值的四个相邻点:
n = [(54.5, 17.041667, 31.993), (54.5, 17.083333, 31.911), (54.458333, 17.041667, 31.945), (54.458333, 17.083333, 31.866)]
Run Code Online (Sandbox Code Playgroud)
z01 z11
z
z00 z10
Run Code Online (Sandbox Code Playgroud)
这是我的原始尝试:
import math
z00 = n[0][2]
z01 = n[1][2]
z10 = n[2][2]
z11 = n[3][2]
c = 0.016667 #grid spacing
x0 = 56 #latitude of origin of grid
y0 = 13 #longitude of origin of grid
i = math.floor((L-y0)/c)
j = math.floor((B-x0)/c)
t = (B - x0)/c - j
z0 = (1-t)*z00 …Run Code Online (Sandbox Code Playgroud) 有一些类似的帖子,但我找不到一个确切的帖子.基本上,我想以同样的意图打开Google地图和Waze.起初我试过这个:
final String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude);
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
Waze直接导航到正确的位置,Google地图打开了正确的位置.然后我意识到谷歌地图没有在该位置放置一个引脚,因此用户很难知道它到底在哪里.所以我环顾四周,意识到Google地图需要"?q = ..(标签)"...我将uri结构更改为:
final String uri = String.format(Locale.ENGLISH, "geo:%f,%f?q=%f,%f (%s)", latitude, longitude, latitude, longitude, name);
Run Code Online (Sandbox Code Playgroud)
但随后Waze做了两件事:导航到正确的地方并在标签上搜索.这要求用户单击后退按钮以关闭搜索结果屏幕并保持导航到正确的位置.
我到处寻找答案,但未能找到能够实现两者的解决方案.起初我认为这是不可能的,Waze有一个错误......但后来我注意到Facebook的信使正在做我想要的.当点击带有位置的消息时,它将打开两个应用程序:Google地图将有一个引脚(带有标签),Waze将直接导航到该位置而不运行搜索.
关于上述问题的几个问题:1.(当然)我怎样才能做到这一点?2.我怎么知道Facebook Messenger的意图是如何构建的?(无论如何我都可以抓住它)3.标签只有"?q = .."的原因是什么?
谢谢
我有数百万个地理点.对于其中的每一个,我想找到所有"相邻点",即在某个半径内的所有其他点,比如说几百米.
对这个问题有一个天真的O(N ^ 2)解决方案---简单地计算所有点对的距离.但是,因为我正在处理适当的距离度量(地理距离),所以应该有更快的方法来做到这一点.
我想在python中这样做.想到的一个解决方案是使用一些数据库(带有GIS扩展的mySQL,PostGIS),并希望这样的数据库能够使用某些索引有效地执行上述操作.我更喜欢更简单的东西,这不需要我建立和学习这些技术.
几点
就python代码而言,我想要的是:
points = [(lat1, long1), (lat2, long2) ... ] # this list contains millions lat/long tuples
points_index = magical_indexer(points)
neighbors = []
for point in points:
point_neighbors = points_index.get_points_within(point, 200) # get all points within 200 meters of point
neighbors.append(point_neighbors)
Run Code Online (Sandbox Code Playgroud) 我必须通过OpenLayers绘制一些代码.线要素编码为GeoJSON格式.我的代码适用于硬编码的GeoJSON功能.但是,如果我将此功能放在单独的文件中并尝试加载它.它只是不起作用.我不知道加载外部GeoJSON文件有什么问题.我已经给了这两个代码.
代码1:
// This code is ok with hard coded GeoJSON features
map.addControl(new OpenLayers.Control.LayerSwitcher());
vectorLayer = new OpenLayers.Layer.Vector("Lines");
var myGeoJSON = { "type": "FeatureCollection",
"features":
[
{ "type": "Feature", "properties": { "LENGTH": 756.304000}, "geometry": { "type": "LineString", "coordinates": [ [ 18.105018, 59.231027 ], [ 18.104176, 59.230737 ], [ 18.103928, 59.230415 ], [ 18.103650, 59.230336 ], [ 18.103028, 59.230463 ], [ 18.102491, 59.230418 ], [ 18.101976, 59.230237 ], [ 18.100893, 59.230110 ], [ 18.100117, 59.230016 ], [ 18.097715, 59.230262 ], [ …Run Code Online (Sandbox Code Playgroud) 我正在尝试在模拟设备上设置坐标.
XXXX-MacBook-XXXXX XXXX$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/XXXXX/.emulator_console_auth_token'
OK
Run Code Online (Sandbox Code Playgroud)
问题是...
geo fix 77.9888 34.0000
KO: unknown command, try 'help'
Run Code Online (Sandbox Code Playgroud)
我似乎没有geo命令
help
Android console command help:
help|h|? print a list of commands
auth use 'auth <auth_token>' to get extended functionality
avd control virtual device execution …Run Code Online (Sandbox Code Playgroud) 我使用HTML5的地理定位API,并且位置对象具有"准确度"属性,该属性可能会根据定位的准确性而变化.
到现在为止还挺好.但价值是一个未指明的单位..有时它是60,或1250甚至18000.
我已经阅读了W3C地理位置API规范[1],他们谈论了这个属性,但从未提及应该如何解释它.
我找到一个可能的答案的唯一地方是国防部世界Geodic系统[2]技术报告.他们提到以cm为单位的精度,1σ(标准偏差).
但这并没有告诉我HTML5地理定位API给我带来的准确性单位是什么.我只能假设它是以厘米为单位.
[1] http://dev.w3.org/geo/api/spec-source.html
[2] http://earth-info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf
我正在尝试使用基于纬度和经度的D3地理库将几个点绘制到地图上.但是,当我将这些值传递给我的投影函数时,它会产生我的SVG图像边界之外的坐标.我的代码基于文档中提供的此示例.
我已将当前代码抛出:http://bl.ocks.org/rpowelll/8312317
我的源数据是一个简单的对象数组,格式如此
var places = [
{
name: "Wollongong, Australia",
location: {
latitude: -34.42507,
longitude: 150.89315
}
},
{
name: "Newcastle, Australia",
location: {
latitude: -32.92669,
longitude: 151.77892
}
}
]
Run Code Online (Sandbox Code Playgroud)
在此之后我设置了一个PlateCarrée投影,如下所示:
var width = 960,
height = 480
var projection = d3.geo.equirectangular()
.scale(153)
.translate([width / 2, height / 2])
.precision(.1);
var path = d3.geo.path()
.projection(projection)
Run Code Online (Sandbox Code Playgroud)
从那里我使用与链接示例有效相同的代码绘制地图.在我的脚本结束时,我使用以下代码在此地图上绘制点:
svg.selectAll(".pin")
.data(places)
.enter().append("circle", ".pin")
.attr("r", 5)
.attr("transform", function(d) {
return "translate(" + projection([
d.location.latitude,
d.location.longitude
]) + …Run Code Online (Sandbox Code Playgroud) geo ×10
android ×3
coordinates ×2
distance ×2
geospatial ×2
python ×2
command-line ×1
d3.js ×1
geohashing ×1
geojson ×1
geolocation ×1
gis ×1
google-maps ×1
gps ×1
html5 ×1
java ×1
javascript ×1
map ×1
math ×1
openlayers ×1
redis ×1
svg ×1
terminal ×1
uri ×1