我正在尝试使用OL3在Google地图上叠加卫星图像(6471x7669 jpg文件)。图像文件的元数据和投影信息提供为:
Driver: JP2ECW/ERDAS JPEG2000 (SDK 3.x)
Files: /mnt/NAIP/TN/2012/34084/m_3408403_ne_16_1_20120527_20120911.jp2
Size is 6471, 7669
Coordinate System is:
PROJCS["NAD83 / UTM zone 16N",
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.2572221010002,
AUTHORITY["EPSG","7019"]],
AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4269"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-87],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
AUTHORITY["EPSG","26916"]]
Origin = (710739.000000000000000,3875921.000000000000000)
Pixel Size = (1.000000000000000,-1.000000000000000)
Metadata:
COLORSPACE=MULTIBAND
COMPRESSION_RATE_TARGET=9
VERSION=1
Corner Coordinates:
Upper Left ( 710739.000, 3875921.000) ( 84d41'26.44"W, 35d 0'14.31"N)
Lower Left ( 710739.000, 3868252.000) ( 84d41'33.42"W, 34d56' 5.56"N)
Upper Right ( 717210.000, 3875921.000) ( 84d37'11.35"W, 35d 0' 9.39"N)
Lower Right ( 717210.000, 3868252.000) ( 84d37'18.55"W, 34d56' 0.64"N)
Center ( 713974.500, 3872086.500) ( 84d39'22.44"W, 34d58' 7.49"N)
Band 1 Block=256x256 Type=Byte, ColorInterp=Undefined
Description = Band #1
Overviews: 3235x3834, 1617x1917, 808x958, 404x479, 202x239
Band 2 Block=256x256 Type=Byte, ColorInterp=Undefined
Description = Band #2
Overviews: 3235x3834, 1617x1917, 808x958, 404x479, 202x239
Band 3 Block=256x256 Type=Byte, ColorInterp=Undefined
Description = Band #3
Overviews: 3235x3834, 1617x1917, 808x958, 404x479, 202x239
Band 4 Block=256x256 Type=Byte, ColorInterp=Undefined
Description = Band #4
Overviews: 3235x3834, 1617x1917, 808x958, 404x479, 202x239
我遇到的问题是解释数据并找出要使用的投影(我不是地理学家)。我已经测试了EPSG:900913和EPSG:3857转换为EPSG:4326,但它似乎不起作用:
var lonlat = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');
提供的数据提到EPSG:7019,EPSG:6269,EPSG:4269,EPSG:9001和EPSG:26916,其中没有一个似乎具有Proj4js定义。提供的角落&中心纬度/经度坐标非常准确。
我的问题是:这是否有现有的proj4.defs?如果没有,我该如何创建一个?非常感谢任何帮助。
更新
进一步扩展这个问题:最初我们将静态图像集中在谷歌地图上就好了。
但不确定将图层移动到一起时要使用哪种转换。简而言之,此代码中的转换<transform>
应该是什么?
view.on('change:center', function() {
var center = ol.proj.transform(view.getCenter(), <transform>, 'EPSG:4326');
gmap.setCenter(new google.maps.LatLng(center[1], center[0]))
});
答案 0 :(得分:1)
您的源图片位于NAD83 UTM 16N或EPSG:26916,请参阅http://spatialreference.org/ref/epsg/nad83-utm-zone-16n/
UTM是一个横向墨卡托投影,其垂直6度的世界条带投射到圆柱体上,其轴穿过磁极。 Google地图使用球形墨卡托(水平圆柱形)投影 - EPSG:3857。这两者的属性完全不同 - 如果不重新投影,您将无法在3857地图上准确地覆盖26916图像。你看过这个http://openlayers.org/en/latest/examples/reprojection-image.html吗?
或者,您可以使用某种GIS程序将图像重新投影到3857,以便更容易使用3857地图进行合成 - 比如GlobalMapper。