Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用proj4和EPSG代码转换成不同的坐标系_Javascript_Leaflet_Coordinate Systems_Proj - Fatal编程技术网

Javascript 用proj4和EPSG代码转换成不同的坐标系

Javascript 用proj4和EPSG代码转换成不同的坐标系,javascript,leaflet,coordinate-systems,proj,Javascript,Leaflet,Coordinate Systems,Proj,我在EPSG:25833中有坐标,它是UTM,32N区。 我想把它们转换成EPSG:3857,WebMercator。警察说 是否可以将EPSG字符串作为firstProjection和secondProjection传递?通过,即对于EPSG:25833,即UTM 32N已包含所有需要的信息。为什么要通过考试才能做到这一点 Proj4js.defs["EPSG:25833"] = "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"; 使用

我在EPSG:25833中有坐标,它是
UTM
,32N区。 我想把它们转换成
EPSG:3857
,WebMercator。警察说

是否可以将EPSG字符串作为
firstProjection
secondProjection
传递?通过,即对于
EPSG:25833
,即
UTM 32N
已包含所有需要的信息。为什么要通过考试才能做到这一点

Proj4js.defs["EPSG:25833"] = "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"; 

使用这个定义也限制了我。如果
EPSG:25833
更改为另一个
EPSG
,该怎么办?然后我也必须更新这个
+proj=utm+zone=32+ellps=WGS84+datum=WGS84+units=m+no_defs

Proj4js分布在以下坐标系中

export default function(defs) {
  defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
  defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
  defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");

  defs.WGS84 = defs['EPSG:4326'];
  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857
  defs.GOOGLE = defs['EPSG:3857'];
  defs['EPSG:900913'] = defs['EPSG:3857'];
  defs['EPSG:102113'] = defs['EPSG:3857'];
} 

所有其他坐标系都需要由用户定义。与EPSG数据库分发的PROJ4 C库相比

这就是你不能只传递一个EPSG代码的原因,除非它是在别处定义的

只是一张纸条

您可以声明,例如

Proj4js.defs["ETRS89 UTM32"] = "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"; 
而不是

Proj4js.defs["EPSG:25833"] = "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs";
还有一个别名

Proj4js.MYEPSG = Proj4js.defs["EPSG:25833"]  

如果UTM区域更改,定义也需要更新。但是UTM区域包含在EPSG代码中。。。但是为了从EPSG代码中读取UTM区域,我需要解码EPSG代码。。。我使用这个图书馆是为了这个,谢谢你的链接。我不知道proj4js的epsgdb。
Proj4js.MYEPSG = Proj4js.defs["EPSG:25833"]