EPSG: слой 4008 не отображается - PullRequest
       111

EPSG: слой 4008 не отображается

2 голосов
/ 16 декабря 2010

У меня есть карта со слоями OSM и Google Base и наложением EPSG: 4326. Теперь я также пытаюсь добавить на карту наложения с другими EPSG. Оверлеи, на которых был EPSG: 2333, отображались просто без проблем. Затем я попытался добавить слой с EPSG: 4008, и ничего не появилось. Я разместил сообщение на форуме openLayers, и мне было предложено изучить проект proj4js (большое спасибо за это, кстати!). Я пытался использовать его, и это кажется многообещающим, но это просто не работает для меня: (

В моем теге body есть сценарии

<script src="./OpenLayers-2.10/OpenLayers.js"></script>
<script src="./proj4js/lib/proj4js-combined.js"></script> //I did also try proj4js.js, but the docs said use this one?

Затем у меня есть их перед объявлением карты и слоя, также в теге body

Ext.onReady(function() {

            Proj4js.defs["EPSG:4008"] = "+proj=longlat +ellps=clrk66 +no_defs";
            Proj4js.defs["SR-ORG:6627"] = "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";
            Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";

...
...


//Map properties
            var options = {
                    controls: [new OpenLayers.Control.Navigation()], //Needed to use GeoExt controls such as the zoomslider
                    maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
                    units: 'm',
                    allOverlays: false //Do not display all layers on load
            }

            var map = new OpenLayers.Map(options);

var borders = new OpenLayers.Layer.WMS(
                    "Borders", "http://localhost:8080/geoserver/wms", {id: 'borders', layers: 'cite:sedac', transparent: true, projection: new OpenLayers.Projection("EPSG:4008")}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
               );

и также попробовал этот конфиг слоя ... после прочтения этого поста http://getsatisfaction.com/opengeo/topics/reprojecting_in_openlayers

var borders = new OpenLayers.Layer.WMS(
                    "Borders", "http://localhost:8080/geoserver/wms", {id: 'borders', layers: 'cite:sedac', transparent: true, srsName: 'EPSG:4326'}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
               );

Все равно ничего не появляется :(. Я делаю что-то не так? Я не вижу ошибки ...

Можно ли даже использовать слои с различными проекциями ??? Я не могу изменить проекцию своей карты на «EPSG: 4008», потому что она сломает мои другие слои, совет по документации заключался в том, чтобы указать проекцию слоя, но, как показывает мой код, я попробовал это без удачи.

Я ценю ваше время, чтобы разобраться в этом для меня,

elshae

EDIT Я также попытался преобразовать шейп-файлы с помощью ogr2ogr:

ogr2ogr -s_srs ./SEDAC/tibet.prj -t_srs EPSG:4326 ./SEDAC/new_tibet.shp ./SEDAC/tibet.shp

И получите следующую ошибку:

ERROR 6: No translation for Lambert_Conformal_Conic to PROJ.4 format is known.
Failed to create coordinate transformation between the
following coordinate systems.  This may be because they
are not transformable, or because projection services
(PROJ.4 DLL/.so) could not be loaded.
Source:
PROJCS["Lambert_Conformal_Conic",
    GEOGCS["Unknown datum based upon the Clarke 1866 ellipsoid",
        DATUM["D_Clarke_1866",
            SPHEROID["Clarke_1866",6378206.4,294.9786982139109]],
        PRIMEM["Greenwich",0],
        UNIT["Degree",0.017453292519943295]],
    PROJECTION["Lambert_Conformal_Conic"],
    PARAMETER["standard_parallel_1",25],
    PARAMETER["standard_parallel_2",47],
    PARAMETER["latitude_of_origin",10],
    PARAMETER["central_meridian",110],
    PARAMETER["false_easting",0],
    PARAMETER["false_northing",0],
    UNIT["METERS",1]]
Target:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.01745329251994328,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4326"]]

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Благой Вести всем!

Понял:)

Я изменил свой шейп-файл на lon lat, используя:

ogr2ogr -t_srs WGS84 outfile.shp infile.shp

Хотя мне интересно, оказало ли это какое-либо влияние на изменение данных моего шейп-файла непредвиденными способами ... Я вижу, что мой предварительный просмотр в Geoserver исходного шейп-файла кажется смещенным под углом, которого не делает мой новый шейп-файл WGS84 ...

Однако я укажу, что угол нового шейп-файла WGS84 выглядит более правильно, так как он довольно хорошо перекрывает мой базовый слой (некоторые небольшие области не идеально, но это может быть связано с самим шейп-файлом, как он есть). почти идеально: р)

Я хочу от всей души поблагодарить Арнда и Уолли за их постоянную добрую и терпеливую помощь на форуме OpenLayers и за то, что они научили меня пользоваться многими замечательными инструментами, о которых я никогда не знал. (Proj4js, ogr2ogr и т. Д.)

Счастливое отображение,

elshae

0 голосов
/ 17 декабря 2010

Я не совсем уверен, что вы пытаетесь сделать, но OpenLayers может только полностью перепроектировать векторные данные. Он не может применить новую проекцию к слою листов (например, WMS) - теоретически углы можно легко перепроецировать, но форма плиток может быть искажена, и OpenLayers не имеет возможности сделать это. Поэтому вы должны настроить свой WMS-сервер на использование проекции, которую вы хотите использовать в конечном приложении, а затем перепроектировать любые векторные наложения в OpenLayers.

...