На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Рамка карты

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebService
Страницы: 1
RSS
Рамка карты
 
Создаю пустую карту в ГИС Мини. Затем добавляю ее в виртуальную папку.

Пробую получить размеры: curl "http://localhost/GISWebServiceSE/service.php?RESTMETHOD=GetBound&Lay232047%23ALIAS%23Layers_4f62c948-1a86-11ea-9cd2-b271382053e7_real_real.sit" и мне возвращаются странные значения: -0.23580776 -0.23580710 0.23580776 0.23580710

До этого создавал таким же способ другую карту, но нанес на нее объект. GetBound возвращает: 33.49233790 55.85258351 64.65422137 69.15370677

Попробовал в коде руками задать bbox:

Код
   const layerparam5: any = {
      id: 'real',
      alias: 'Real map',
      legend: '*',
      watch: 1,
      url: maputils.buildWmsUrl('HOST#localhost#2047#ALIAS#Layers_4f62c948-1a86-11ea-9cd2-b271382053e7_real_real.sit'),
      bbox: [61.40912281, 33.43866356, 70.9898426, 101.44292720]
    }


Но все равно всегда для этой карты вебсервис на запрос http://10.10.40.160/giservice/service.php?SERVICE=WMS&RESTMETHOD=GETIMAGE&format=image/png возвращает

Код
<?xml version="1.0" encoding="utf-8"?>
<ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="http://www.opengis.net/ows/2.0 owsExceptionReport.xsd">
  <Exception code="InternalMapServerError" locator="BBOX">
    <ExceptionText>BBOX is invalid or out of range</ExceptionText>
</Exception>
</ExceptionReport>


Что можно сделать? Надо явно при создании карты задавать ее рамку или это можно обойти? Но для карты на которую я нанес один объект я ничего про рамку карты не указывал - ни в паспорте, ни в коде.
Изменено: Алексей - 27.07.2021 14:08:50
 
Цитата
Алексей написал:
Что можно сделать? Надо явно при создании карты задавать ее рамку или это можно обойти? Но для карты на которую я нанес один объект я ничего про рамку карты не указывал - ни в паспорте, ни в коде.
При добавлении объектов рамка листа автоматически пересчитывается.
Либо сразу карту ограничивать рамкой (в ГИС Панорама Мини).
 
Цитата
Елена Кузнецова написал:
Цитата
Алексей написал:
Что можно сделать? Надо явно при создании карты задавать ее рамку или это можно обойти? Но для карты на которую я нанес один объект я ничего про рамку карты не указывал - ни в паспорте, ни в коде.
При добавлении объектов рамка листа автоматически пересчитывается.
Либо сразу карту ограничивать рамкой (в ГИС Панорама Мини).

Я впоследствии добавляю объекты на карты динамически - при помощи mapapi. Если открыть в ГИС Оператор данную карту - то проблемы нет, если через веб - то ситуация не меняется даже после добавления объектов.
 
Хотел уточнить.
Карта добавлена в виртуальную папку ГИС Сервера или сервиса?
Редактирование карты идёт через ГИС Сервер или с помощью транзакций через сервис?
Запрос "http://localhost/GISWebServiceSE/service.php?RESTMETHOD=GetBound&Lay232047%23ALIAS%23Layers_4f62c948-1a86-11ea-9cd2-b271382053e7_real_real.sit" идёт уже после добавления объектов на карту?
Уточните версию сервиса.
 
Если речь о GIS WebToolKit SE или GIS WebServer SE, то в свойствах слоя, на котором создаются объекты, не надо изначально указывать габариты.
Если необходимо получить габариты программно, то вот пример запроса габаритов и обработки ответа:
Код
        /**
        * Загрузить габариты слоя
        * @method loadBounds
        * @param event {Object} событие `showlayerextent`
        */
        loadBounds: function (event) {

            var maplay = this.map.tiles.getLayerByIdService(event.idlayer);

            if (!maplay) { return; }

            var url = maplay.serverUrl ? maplay.serverUrl : maplay.server;

            var server = url.split('?'),
                wfs = new WfsQueries(server[0], this.map);

            wfs.context = this;

            //wfs.onDataLoad = function (data) { wfs.context.onloadBounds(data) };
            wfs.onDataLoad = this.onloadBounds.bind(this);

            wfs.sendRequest ({'restmethod' : 'GetBound', 'layer_id' : event.idlayer});

        },

        /**
         * Обработать загрузку габаритов слоя (запроса GetBound).
         *
         * @method onloadBounds
         * @param response {string} строка ответа, габариты слоя, градусы
         */
        onloadBounds: function (response) {

            // Проверить существование подстроки "Format"
            var pos = -1;
            if (response) {
                pos = response.indexOf('Format');
            }
            if (pos === -1) {
                console.log("GWTK.WfsRestRequests.onloadBounds. " + w2utils.lang("Failed to get data"));
                if (response) {
                    console.log(response);
                }
                return;
            }

            var val = response.substr(0, pos),
                coord = val.split(' ');
            if (coord.length !== 4) {
                return;
            }

            if (typeof this.map.options.maxBounds == 'undefined') {
                this.map.showMapExtent(parseFloat(coord[1]), parseFloat(coord[0]), parseFloat(coord[3]), parseFloat(coord[2]));
                return;
            }

            var min = new GWTK.LatLng(parseFloat(coord[1]), parseFloat(coord[0])),
                max = new GWTK.LatLng(parseFloat(coord[3]), parseFloat(coord[2])),
                bounds = GWTK.latLngBounds(min, max);

            if (!this.map.options.maxBounds.intersects(bounds)) {
                console.log('GWTK.ViewEntireLayerControl. ' + 'Layer bounds are out of map max bounds');
                w2alert('Layer bounds are out of map max bounds' + '!');
                return;
            }

            // обрезаем габариты слоя по maxBounds карты
            var max_sw = this.map.options.maxBounds.getSouthWest(),
                max_ne = this.map.options.maxBounds.getNorthEast();

            if (min.lat < max_sw.lat) {
                min.lat = max_sw.lat;
            }
            if (max.lat > max_ne.lat) {
                max.lat = max_ne.lat;
            }
            if (min.lng < max_sw.lng) {
                min.lng = max_sw.lng;
            }
            if (max.lng > max_ne.lng) {
                max.lng = max_ne.lng;
            }

            this.map.showMapExtent(min.lat, min.lng, max.lat, max.lng);

        }
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности