转换坐标是可用的

时间:2011-05-22 09:01:58

标签: php javascript coordinate-systems

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

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

我不知道这些格式是什么,或者如何将这些格式转换为我可以使用的格式。这可以是JavaScript或PHP!

4 个答案:

答案 0 :(得分:5)

看起来像纬度,经度,度,分,秒(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应该直接采用它。

答案 1 :(得分:1)

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

在将它们转换为有用的数字方面,这将取决于它们是分数度数还是度数,分钟数和秒数;以及你想用它们做什么。

答案 2 :(得分:1)

格式显示为逗号分隔值(CSV)

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

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

-EDIT-

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

答案 3 :(得分:1)

这个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}


}