2011-05-22 130 views
1

我有一个数据源的坐标在以下格式。转换坐标为可用

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

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

+0

我觉得正则表达式是有用的,但在你希望他们是什么格式? – pimvdb 2011-05-22 09:14:54

+0

分为41.89028,12.49248例如 – 2011-05-22 09:17:15

回答

5

看起来像经度,纬度,分,秒(DMS)。有关转换,请参阅http://www.ngs.noaa.gov/PC_PROD/Inv_Fwd/readme.htm

典型的地图应用程序将采用十进制格式的经纬度,因此您需要将DMS转换为十进制(N为+,S为 - )。也就是说,我有些惊讶地发现谷歌地图会直接带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应该直接采用。

+0

啊是的,然后我想W和S只需要被替换为 - ?? – 2011-05-22 09:06:56

+0

您的数据源看起来像来自GPS设备的输出。数据的目的地是什么?你是否试图在地图上绘制它? – tofutim 2011-05-22 09:11:00

+0

是的,我的确如此。需要Google地图可以理解的格式 – 2011-05-22 09:11:26

1

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

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

+0

错误是的我知道他们是度,只是格式未知! – 2011-05-22 09:07:17

1

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

值看起来像纬度(北+或南 - ) - 由ddmmss

我想跟着和经度(西+或东) ddmmss比十进制度更容易,因为MM和SS位是小于59个

CNC中

经度的值必须是+/- 180(DDDMMSS),但为纬度值需要+/- 90(DDMMSS)

+0

但它有一个额外的价值....更像ddmmsss(看第二列) – 2011-05-22 09:13:30

+0

但经度将高达三位数,以允许+/- 180 – pavium 2011-05-22 09:24:08

1

这个js函数将清洁您的字符串转换为已知的纬度经度的格式,使用示例:

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} 


}