我有一堆坐标为UTM格式的文件.对于每个坐标,我有东,北和区.我需要将其转换为LatLng,以便与Google Map API一起使用,以便在地图中显示信息.
我找到了一些这样做的在线计算器,但没有实际的代码或库.http://trac.osgeo.org/proj4js/是Javascript的投影库,但是看一下它不包括UTM投影的演示.
我对整个GIS领域仍然很新鲜,所以我想要的是ala:
(lat,lng) = transform(easting, northing, zone)
Run Code Online (Sandbox Code Playgroud) 我很困惑.我有一点意见:
x= -12669114.702301
y= 5561132.6760608
Run Code Online (Sandbox Code Playgroud)
我通过DrawFeature控制器在矢量图层上绘制了一个正方形.
这些数字似乎......呃...很大,但它们看起来很有效,因为如果我后来绘制一个具有相同点的正方形,它处于相同的位置,所以我认为它们必须是正确的.
问题是当我尝试将此点转换为纬度和经度时.
我正在使用:
map.getLonLatFromPixel(pointToPixel(points[0]));
Run Code Online (Sandbox Code Playgroud)
其中points [0]是几何Point,pointToPixel函数占据任意点并将其转换为像素(因为getLonLatFromPixel需要一个像素).它通过简单地获取点的x,并使其成为像素x,等等来实现这一点.
我得到的纬度和经度是以下顺序:
lat: -54402718463.864
lng: -18771380.353223
Run Code Online (Sandbox Code Playgroud)
这显然是错误的.我真的很困惑.我尝试使用以下方法投影此对象:
.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
Run Code Online (Sandbox Code Playgroud)
但是我真的没有得到它,而且非常确定我做错了,无论如何.
我的代码在这里:http://pastie.org/909644
我有点不知所措.坐标似乎是一致的,因为我可以重复使用它们来获得相同的结果......但它们似乎比我在openLayers网站上看到的任何示例都要大......
我有纽约纽约市的Lat/Long值; 40.7560540,-73.9869510和地球的平面图像,1000像素×446像素.
我希望能够使用Javascript将Lat/Long转换为X,Y坐标,其中该点将反映位置.
因此X,Y坐标形成图像的左上角; 289,111
注意事项:
我有这张图片:http://imgur.com/99tSz.png.英国地图(不包括南爱尔兰).
我已经成功地获得了经度和经度,并通过获取英国最左边的经度和最右经度并使用它们来确定将点放在地图上的位置,将其绘制到此地图上.
这是代码(用于Processing.js但可以用作js或任何东西):
// Size of the map
int width = 538;
int height = 811;
// X and Y boundaries
float westLong = -8.166667;
float eastLong = 1.762833;
float northLat = 58.666667;
float southLat = 49.95;
void drawPoint(float latitude, float longitude){
fill(#000000);
x = width * ((westLong-longitude)/(westLong-eastLong));
y = (height * ((northLat-latitude)/(northLat-southLat)));
console.log(x + ", " + y);
ellipseMode(RADIUS);
ellipse(x, y, 2, 2);
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法对这些值实施墨卡托投影.这些图很合理,但它们不够好,这个投影可以解决它.
我无法弄清楚该怎么做.我找到的所有例子都在解释如何为整个世界做这件事.这是一个很好的示例资源,解释了如何实现投影,但我无法让它工作.
另一个资源是英国的极端点,我获得了英国各地边界框的纬度和经度值.他们也在这里:
northLat = …Run Code Online (Sandbox Code Playgroud) 所以我正在编写一个Javascript库,它采用x,y坐标并使用它们绘制美国地图.为此,我需要找到绘制每个状态所需的坐标数据.维基百科上的这个地图是我需要的一个很好的例子,因为SVG文件包含组成每个州的形状很好地标记:http://upload.wikimedia.org/wikipedia/commons/3/32/Blank_US_Map.svg
我还有一组我需要放在这张地图上的网站.由于我知道每个站点的纬度和经度,我可以使用它来在地图上的适当位置绘制每个站点.不幸的是,为了实现这一点,我的地图需要使用墨卡托投影,这样就可以轻松映射lat,long到x,y像素坐标.
我上面提到的维基百科地图使用了一些其他投影,所以我不能将它用于此目的.有没有人知道我在Mercator投影中哪里可以找到这种类型的地图数据?任何数据格式都可以,只要我能以编程方式获取用于绘制每个状态的坐标并识别哪些形状构成每个状态.
我正在使用OpenLayers和一个普通的墨卡托地图,我试图通过在latlong中找到一个点网格来对边界框进行采样.bbox以latlon表示,例如
48.1388,-15.3616,55.2057,-3.9359
Run Code Online (Sandbox Code Playgroud)
我可以用度数定义距离(例如x:2.5,y:2.4)并从那里计算出点数.但我想用米(例如50000)来表达这个距离,以便将它与用户心态联系起来(人们理解米,而不是度数).我怎样才能转换这个距离?我知道如何重新投射一个点,但不是距离.
谢谢你的任何提示!Mulone
我在WGS84,我想转变为一个地图投影使用SWEREF99 TM协调GPS坐标PROJ.4在Java或Proj4js在JavaScript中.
很难找到PROJ.4的文档以及如何使用它.如果您有良好的链接,请将其作为评论发布.
SWEREF99 TM的PROJ.4参数是+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
我试图使用PROJ.4 Java库进行转换Lat: 55° 00’ N, Long: 12° 45’ E并尝试使用此代码:
String[] proj4_w = new String[] {
"+proj=utm",
"+zone=33",
"+ellps=GRS80",
"+towgs84=0,0,0,0,0,0,0",
"+units=m",
"+no_defs"
};
Projection proj = ProjectionFactory.fromPROJ4Specification(proj4_w);
Point2D.Double testLatLng = new Point2D.Double(55.0000, 12.7500);
Point2D.Double testProjec = proj.transform(testLatLng, new Point2D.Double());
Run Code Online (Sandbox Code Playgroud)
这给了我一点,Point2D.Double[5197915.86288144, 1822635.9083898761]但我应该N: 6097106.672, E: 356083.438
是我做错了什么?我应该使用什么方法和参数呢?
正确的值取自Lantmäteriet.
我不确定是否proj.transform(testLatLng, new Point2D.Double());使用正确的方法.
我已经使用Leaflet和来自WMS服务的切片实现了一个地图.它们提供了一系列预测,其中一个可用于标准Leaflet EPSG:4326.
然而,地图看起来有点扭曲,我调查其他一个预测会更好.地图的供应商使用EPSG:32624,但我似乎无法正确地进行投影.
这是完整列表:EPSG:32624,EPSG:32619,EPSG:32620,EPSG:32621,EPSG:32622,EPSG:32623,EPSG:32624,EPSG:32625,EPSG:32626,EPSG:32627,EPSG:4326, EPSG:3413,EPSG:3575
我有一个小提琴:http://jsfiddle.net/uyrv2j7f/2/
有两个地图,最上面的一个是使用所需的投影,但不是真的有效.底部是使用工作但扭曲的投影.
我很确定,我需要编辑crs的配置.但到了什么?哪里可以找到信息?
我在这里找到了第一部分:http://spatialreference.org/ref/epsg/wgs-84-utm-zone-24n/ - 其他我用其他投影的例子.
var crs = new L.Proj.CRS('EPSG:32624',
'+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs', {
resolutions: [
2116.670900008467,
1058.3354500042335,
529.1677250021168,
264.5838625010584,
132.2919312505292,
66.1459656252646,
26.458386250105836,
13.229193125052918,
6.614596562526459,
2.6458386250105836,
1.3229193125052918,
0.6614596562526459,
0.33072982812632296,
0.21166709000084669
],
transformation: new L.Transformation(1, -500, -1, 7017000)
});
Run Code Online (Sandbox Code Playgroud)
希望有人可以帮助我.
另外:Leaflet通常对我来说就像一个魅力,是这个案例的首选图书馆.但是,如果有人能够帮助使用不同的图书馆,那么我会非常感兴趣.....
更新:tinproject提供了一些指示,我去寻找,这个版本更接近想要的结果:http://jsbin.com/rehoxu/5/edit?html,css,js,output
我仍然喜欢有关如何真正定义自定义投影变量的输入...
一切顺利
我正在尝试使用proj.4库将纬度/经度坐标转换为OSGB36 x和y.
还有其他人成功完成了吗?我需要填充srcPrj4String和destPrj4String变量,例如
string srcPrj4String ="+ proj = longlat + ellps = WGS84 + datum = WGS84 + no_defs";
string destPrj4String ="+ proj = utm + zone = 11 + ellps = GRS80 + datum = NAD83 + units = m";
但我无法弄清楚destPrj4String应该与OSGB36一起使用 - 我知道数据应该是+ datum = OSGB36,但我尝试的一切都不起作用
有任何想法吗?
提前谢谢了
莱迪
我需要在Alberta 10 TM Projection中将纬度/经度坐标转换为Easting/Northing坐标.
10 TM投影类似于UTM,但它是加拿大阿尔伯塔省的定制投影.我认为(付出一些努力)我可以自己编码,但如果已经完成,我宁愿不重新发明轮子.
proj4js ×10
gis ×4
proj ×4
javascript ×3
openlayers ×2
coordinates ×1
geolocation ×1
haversine ×1
java ×1
leaflet ×1
maps ×1
mercator ×1
php ×1
projection ×1
python ×1
transform ×1
wgs84 ×1