Сервер WMS / WFS: разве я сумасшедший, когда пишу свой собственный?

Я человек типа «сделай сам», но я хочу убедиться, что я не собираюсь действовать, пытаясь укусить

Я пишу картографическое приложение на основе браузера, которое должно иметь возможность работать автономно (без подключения к Интернету) на машине конечного пользователя. То есть приложение представляет собой своего рода сервер, который во многих случаях устанавливается на конечном пользователе. s компьютер, и браузер будет указывать на какой-то URL-адрес localhost для доступа к нему.

Я буду использовать MapLayers на стороне клиента, а на стороне сервера будет набор настраиваемой логики, специфичной для приложения, такой как обработка событий щелчка на карту определенными настраиваемыми способами, создавая различные настраиваемые объекты на карте в определенное время и т. д.

Для части сервера, связанной с «бизнес-логикой», я с удовольствием использую paste / webob с python. Это простая инфраструктура, которая позволяет мне легко вводить всю эту настраиваемую логику.

Я думал, что клиент будет взаимодействовать с двумя серверами: сервером бизнес-логики paste / webob и сервером только для обслуживания элементов карты WMS и WFS. . Итак, я смотрел на MapServer и GeoServer для обработки частей карты и ... я не доволен.

Я не доволен, потому что я не не хочу устанавливать и беспокоиться о «зверюге» на клиентских машинах. Что касается MapServer, я действительно не хочу устанавливать полноценный веб-сервер, такой как Apache, и мне приходится иметь дело с CGI, PHP и MapScript. Для GeoServer существует (потенциально) установка Java и работа с различными сложностями настройки и администрирования GeoServer.

Отчасти это просто проблема обучения. Если мне удастся этого избежать, я не особенно заинтересован в изучении тонкостей MapServer или GeoServer. Я установил GeoServer, указал ему на некоторые из моих данных и смог использовать предварительный просмотр MapLayers, встроенный в приятный веб-администратор GeoServer, для просмотра моих данных. Но когда я попытался предоставить данные по-настоящему, используя мою собственную веб-страницу MapLayers, указывающую на GeoServer, у меня произошел сбой GeoServer. То, что я мог вызвать сбой сервера, просто отправив несколько предположительно искаженных запросов от клиента, было для меня весьма неожиданным. И я мог покопаться в журналах GeoServer, чтобы попытаться выяснить, что я сделал не так, но ... я действительно не хочу тратить на это много времени.

Итак, я рассматриваю возможность реализации частей интерфейса WMS и WFS самостоятельно, просто используя уже имеющийся у меня сервер paste / webob. На самом деле может оказаться, что мне нужна только WMS, поскольку я могу обрабатывать векторные объекты с помощью простого настраиваемого протокола, который я создаю для передачи данных клиенту, который затем может создавать объекты и управлять ими напрямую с помощью OpenLayers.

I ' Мы рассмотрели спецификации и примеры сообщений для WMS (и немного меньше для WFS). Вроде не так уж и сложно реализовать этот протокол сам, особенно потому, что в этом случае у меня есть полный контроль над клиентом - это не значит, что мне нужно действовать как общий сервер WMS или WFS; Мне просто нужно сделать мой собственный клиент OpenLayers счастливым.

Две основные возможности, которые мне нужны у WMS-сервера:

  • Обслуживание тайлов из хранилища предварительно отрисованных тайлов, которые я создал заранее (я ' Я буду выполнять предварительную визуализацию плиток, используя данные OpenStreetMap и mapnik в качестве механизма перерисовки; и я буду хранить и получать к ним доступ, используя обычную схему именования плиток в стиле Google Maps, которую ожидает OpenLayers. данные, которые я храню локально, отображаются поверх плиток. Например, у меня может быть, скажем, 10000 точек на одном «слое» и 10000 полигонов на другом слое, и когда пользователь активирует эти слои, я буду обслуживать те же базовые плитки, но пока я обслуживаю эти плитки, я буду рендерить эти дополнительные функции поверх них, и, возможно, я реализую простую схему кэширования, чтобы сохранить эти перекрытия. рендеринг плиток в течение некоторого времени.

Итак, мой вопрос: хотя я знаю, что существуют существующие инструменты, которые делают эти вещи (MapServer, GeoServer, TileCache и другие), мне кажется, что это меньше работы для я просто ответил на несколько простых сообщений WMS и сам сделал это дополнительное рисование на моих плитках в python, убедившись, что все правильно спроецировано и т.д. слои, простые линии, значки и, возможно, надписи. Конечно, иметь решение только для python звучит красиво и просто.

Я полагаю, что если мне когда-нибудь понадобится расширить поддержку протокола WMS / WFS или выполнить более сложную перерисовку, я могу просто вставить MapServer / GeoServer в это время.

Есть ли здесь подводные камни, которые я не рассматриваю?

6
задан M Katz 17 March 2011 в 06:41
поделиться