【问题标题】:Projecting an Image on Google Map using OpenLayers 3使用 OpenLayers 3 在 Google 地图上投影图像
【发布时间】:2016-06-26 23:35:11
【问题描述】:

我正在尝试使用 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]))
});

【问题讨论】:

  • 这是一个相当大的图像。与其直接尝试将其覆盖在地图上,我建议您首先使用地图服务器来提供它,例如使用 MapServer 或 GeoServer。这样,您将能够使用 WMS 协议根据缩放级别呈现最佳图像。 OpenLayers 支持 WMS。您可能也有兴趣寻找 OL3-Google-Maps:mapgears.github.io/ol3-google-maps
  • 感谢@Alexandre Dubé 的评论。图像渲染实际上不是问题或问题,因为这些实际上是 .jp2 文件(甚至更大的卫星图像)。我们使用 IIP 图像服务器来有效地渲染这些。我确实查看了 ol3-google-maps。目前看来,它的范围有限,并且没有关于如何处理 ol.source.ImageStatic 的示例。该问题仍然是 OL3 转换问题。我们在 Google 地图上成功地将图像居中(84d39'22.44"W,34d58'7.49"N),但是当您移动图层时,它们会关闭。
  • 您可以在 ol3-google-maps 的 GitHub 上创建一个关于支持静态图像源的问题。一名学生目前正在参加该项目的 Google Summer of Code。如果他有时间,他可以做这件事。或者,您也可以通过提供 Pull Request 自己贡献。

标签: google-maps openlayers-3


【解决方案1】:

您的源图像位于 NAD83 UTM 16N 或 EPSG:26916 中,请参阅 http://spatialreference.org/ref/epsg/nad83-utm-zone-16n/

UTM 是横轴墨卡托投影,将世界的垂直 6 度带投影到圆柱体上,圆柱体的轴穿过两极。谷歌地图使用球形墨卡托(水平圆柱)投影 - EPSG:3857。这两者的属性完全不同——如果不重新投影,您将无法在 3857 地图上准确地叠加 26916 图像。

你看过这个http://openlayers.org/en/latest/examples/reprojection-image.html 吗?

或者,您可以使用某种 GIS 程序将您的图像重新投影到 3857,以便更轻松地使用 3857 地图进行合成 - 比如说 GlobalMapper。

【讨论】:

  • 感谢@billChadwick 的提示。正如建议的那样,我最终使用 gdal 将原始 .jp2 文件(在 EPSG:26916 中)重新投影到 .tiff 文件(EPSG:3857): gdalwarp -of GTiff -s_srs epsg:26916 -t_srs epsg:3857 ,新的纬度/经度似乎准确。新生成的 .tiff 文件为 6631 x 7832。现在我必须使用 Openlaters3 从像素 [0,0,6631,7832] 投影到 ESPG:3857。如果您对如何执行此操作有任何建议,我将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多