2016-02-04 2 views
0

У меня есть проблема правильного позиционирования изображения с помощью OpenLayers. У меня есть веб-программное обеспечение, как создать файл KML или отобразить карту на веб-странице.OpenLayers.Image разность позиций между kml vs openlayers

Вот скриншот отображения карты на Google Планета Земля и тот же дисплей с openlayers (Google Earth - хорошая визуализация). карта немного растянуть на севере

enter image description here enter image description here

Что такое ложь? преобразование epsg? Нужно ли мне возвращать изображение с помощью gdalwarp?

Вот пример моего кода

function ConvertLonLatFromESPG4326ToESPG900913(LonLat) { 
var lonlatTransforme = LonLat.clone(); 
if (map == null) { 
    lonlatTransforme.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")); 
} 
else { 
    lonlatTransforme.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection(map.getProjectionObject().projCode)); 
} 
return lonlatTransforme; 

} 

var bounds = new OpenLayers.Bounds(); 
bounds.extend(ConvertLonLatFromESPG4326ToESPG900913(new OpenLayers.LonLat(y1, x1))); 
bounds.extend(ConvertLonLatFromESPG4326ToESPG900913(new OpenLayers.LonLat(y2, x2))); 

var graphic = new OpenLayers.Layer.Image(
      nomImage, 
      url, 
      bounds, 
      new OpenLayers.Size($("#map").width(), $("#map").height()), 
      { 
       //http://www.forumsig.org/showthread.php?t=26393 
       maxResolution: map.layers[0].resolutions[0], 
       resolutions: map.layers[0].resolutions,      
       isBaseLayer: false, 
       displayInLayerSwitcher: true 
      } 
     ); 
map.addLayer(graphic); 

Спасибо за вашу помощь

+0

Границы изображения неверны. Либо границы OpenLayers.Layer.Image, либо файл изображения Если вы не используете функцию преобразования OpenLayers, также ConvertLonLatFromESPG4326ToESPG900913 может быть неправильным! – fradal83

+0

, потому что изображение не имеет границы, которую трудно увидеть при захвате, но на этой скрипке вы можете получить дополнительную информацию: http://jsfiddle.net/seb49/cdmsud7m / – seb49

ответ

0

я, наконец, получил решение, как я думал, что он должен был использовать gdalwarp.

Вот мой код, чтобы восстановить изображение

//step1 create a GeoTIFF 
gdal_translate.exe -of Gtiff -co tfw=yes -a_ullr -5.25555900000001 52.739645 10.334585 41.047037 -a_srs EPSG:4326 "D:\imageSource.png" "D:\imageEtape1.tiff" 
//step2 redraw GeoTIFF 
gdalwarp.exe -co COMPRESS=LZW -r bilinear -s_srs EPSG:4326 -t_srs EPSG:900913 "D:\imageEtape1.tiff" "D:\imageEtape2.tiff" 
//step3 transform the geoTiff to PNG 
gdal_translate.exe -of PNG -a_ullr -5.25555900000001 52.739645 10.334585 41.047037 -a_srs EPSG:4326 "D:\imageEtape2.tiff" "D:\imageFinale.png"[/code] 

Я надеюсь, что это может помочь кому-то. (Теперь я понимаю, почему OpenLayers, хотя он знает, чтобы разбирать kml, не управляет groundoverlay, потому что результат будет такой же проблемой, что у меня был

Смежные вопросы