【问题标题】:Convert coordinates to be useable将坐标转换为可用
【发布时间】:2011-05-22 09:01:58
【问题描述】:

我有一个坐标格式如下的数据源。

N642500,W0241600
N660700,W0240000
N652000,W0222700
N660800,W0195500
S645500,E0170800
S644000,E0162200

我不知道这些是什么格式,也不知道如何将它们变成我可以使用的格式。这可以是 JavaScript 或 PHP!

【问题讨论】:

  • 我认为正则表达式很有用,但您希望它们采用什么格式?
  • 以 41.89028 , 12.49248 为例

标签: php javascript coordinate-systems


【解决方案1】:

看起来像纬度、经度的度、分、秒 (DMS)。请参阅http://www.ngs.noaa.gov/PC_PROD/Inv_Fwd/readme.htm 了解转化情况。

通常地图应用程序将采用十进制形式的纬度和经度,因此您需要将 DMS 转换为十进制(N 为 +,S 为 -)。也就是说,我有点惊讶地发现 Google 地图会直接采用 DMS - 请参阅http://groups.google.com/group/Google-Maps-API/msg/670c54481d91e6b3?pli=1。所以你甚至不需要转换它。例如:

51 57' 32.48",00 55' 55.23" 
http://maps.google.com/maps?f=q&hl=en&q=51++57%27+32.48%22,00+55%27+5... 

如果需要计算:

function DMS(lat,latm,lats,lon,lonm,lons) { 
  if (lat<0) { 
    latm = -latm; 
    lats = -lats; 
  } 
  if (lon<0) { 
    lonm = -lonm; 
    lons = -lons; 
  } 
  lat = lat + latm/60 + lats/3600; 
  lon = lon + lonm/60 + lons/3600; 
  return new GLatLng(lat,lon); 
} 
map.setCenter( DMS(35,3,39.08, -118,9,2.20)); 

根据http://groups.google.com/group/google-maps-api/msg/2e3436f3bf7d6155。但我认为API应该直接接受它。

【讨论】:

  • 啊是的,然后我想 W 和 S 只需要替换为 - ??
  • 您的数据源看起来像 GPS 设备的输出。数据的目的地是什么?你想把它画在地图上吗?
  • 是的,我确实是。需要 Google 地图可以理解的格式
【解决方案2】:

那些将是 latitudelongitude。数据源的文档应该告诉你单位是什么;通常它们是度数(以各种分数形式),但您需要知道给出的数字是度数的小数部分,还是度、分和秒。

就将它们转换为有用的数字而言,这取决于它们是分数还是度、分和秒;以及你想用它们做什么。

【讨论】:

  • 呃,是的,我知道它们是度数,只是格式未知!
【解决方案3】:

格式似乎是逗号分隔值 (CSV)

这些值看起来像纬度(北 + 或南 -)和经度(西 + 或东 -),后跟 ddmmss

我认为 ddmmss 比十进制度更有可能,因为 MM 和 SS 数字小于 59

-编辑-

LONGITUDE 的值必须是 +/- 180 (DDDMMSS),但 LATITUDE 的值必须是 +/- 90 (DDMMSS)

【讨论】:

  • 但经度最多为三位数字以允许 +/- 180
【解决方案4】:

这个 js 函数会将你的字符串清理成已知的 lat lon 格式,用法示例:

clean('N51618017,W0248291');

很简单,下面就是函数

function clean(string){

var values = string.split(','),
    lat,
    lon;

if(values[0].search(/S/)){
    lat = '-';
}
if(values[1].search(/W/)){
    lon = '-';
}

lat += values[0].substring(1, 3)+'.'+values[0].substring(4);
lon += values[1].substring(1, 3)+'.'+values[1].substring(4);

//now you got your values

//so can do this:
var url = 'http://www.gorissen.info/Pierre/maps/googleMapLocation.php?lat='+lat+'&lon='+lon+'&setLatLon=Set';

//or just return them as an object:
pos = {name:'your pos name',latitude:lat,longitude:lon}


}

【讨论】:

    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多