Что будет, если наш KML слишком большой / сложный для API Карт Google? [закрыто]

29

Наше веб-приложение включает в себя простые возможности картирования (в настоящее время это просто маркеры и наложения KML на встроенной карте Google). Это работает довольно хорошо; единственное реальное ограничение, с которым мы сталкиваемся, это наложения KML, которые выходят за пределы ограничений по размеру и сложности Google для KML .

Мы рассматриваем возможность установки нашего собственного сервера (например, GeoServer или ArcGIS Server); но это кажется огромным шагом просто для того, чтобы обслуживать (например) 15 МБ KML, когда лимит Google составляет 10 МБ.

Мне нужна проверка работоспособности: есть ли какая-то золотая середина между бесплатным и легким API Google для наложений KML и настройкой моего собственного сервера плиток?

Херб Каудилл
источник
5
разбейте свой один KML на 2 меньших файла KML - необязательное включение и выключение данных, которые вам не нужны.
Mapperz
1
необязательное использование таблиц слияния (ограничение строки 100 КБ или 100 МБ в данных) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/… смотрите groups.google.com/group/fusion-tables-users-group/browse_thread/…
Mapperz
@mapperz Вы можете загрузить только 100 МБ данных за один раз, но затем вы можете импортировать дополнительные строки в ту же таблицу до 250 МБ памяти.
география
Хотя я вижу, вы уже это знали .. gis.stackexchange.com/questions/6615/…
geographika
Служба Fusion Tables закрывается 3 декабря 2019 года, поэтому я вижу вариант, который позволяет уменьшить файлы kml с помощью программного обеспечения - рабочего стола QGIS. есть также библиотека Python qgis. Я использовал рабочий стол QGIS с опцией Упростить геометрию, используя 0,0005. Затем я экспортирую созданный слой как кмл. Вы можете сделать это как пакетную работу из того же меню. Затем вы можете открыть все созданные слои в отдельном проекте и с помощью консоли на рабочем столе QGIS преобразовать все файлы
.shp в .kml

Ответы:

12

Поскольку вы уже вложили средства в разработку Google Maps, я настоятельно рекомендую поместить все данные в Google Fusion Tables, которые затем можно проанализировать на карте аналогично KML с невероятной производительностью (см. Приложение WNYC Fusion Tables ). Считайте, что это обновление до KML без необходимости кардинально изменять интерфейс.

Гады
источник
Я думаю, что это отличная идея, если ваши данные не находятся в расписании обновления> 24 часов. Это то, что Google только что сказал нам (если kml замедляет работу браузера с использованием таблиц fusion), я бы сказал, что это лучший ответ.
Стив
1
Спасибо за указание на Fusion Tables - каким-то образом это полностью ускользнуло от моего внимания, очень круто. К сожалению, работать с данными, которые часто меняются, было бы немного неуклюже; и общие ограничения хранения (250 МБ на пользователя) не позволят нам масштабироваться.
Херб Каудилл
2
Обратите внимание, что экспериментальная служба Fusion Tables закрывается 3 декабря 2019 года.
Джонас
12

Вы можете разбить ваш KML на несколько KML с помощью родительского KML, ссылающегося на меньшие кмл. По крайней мере, это приведет к уменьшению размеров файлов до приемлемого уровня и позволит вам ссылаться на гораздо большие наборы данных, как на KML.

Честно говоря, KML действительно хорош только для небольших наборов данных с небольшим количеством функций и связанных атрибутов. Я бы не стал использовать его в качестве источника данных. Если вы хотите, чтобы эти файлы становились больше, я бы посмотрел на другой тип данных или определенно выбрал бы маршрут GeoServer / MapServer для распределенных наборов данных.

OptimizePrime
источник
2
Но сетевой KML (с Superoverlay предназначены для больших наборов данных), но требует веб-сервера и программного обеспечения для рендеринга. Geoserver хорошо справляется с этим типом KMZ - лучше всего работает с Google Планета Земля, поскольку API Карт Google ограничивает использование KML.
Mapperz
У меня никогда не было особой удачи со сверхплоскостями, кроме как с Google Earth Enterprise Client. Хотя я не проводил много времени с этим. Определенно вариант для изучения, +1 @Mapperz
OptimizePrime
1
Используйте GeoServer с Oracle и работает очень хорошо, рендеринг KMZ (суперперекрытие) - живые (постоянно обновляемые) данные, которые очень полезны для пользователей - пришлось настроить геосервер, чтобы ускорить обновление.
Mapperz
8

Если вы не потратили слишком много времени на API Google Maps, вы можете переключиться на OpenLayers, который имеет клиентский анализатор KML, который может читать ваши собственные файлы KML - см. Пример ниже:

http://openlayers.org/dev/examples/kml-layer.html

Однако для 15-мегабайтного файла это может привести к остановке браузера. Возможно, он слишком медленный на серверах Google, когда вы приближаетесь к пределу размера файла.

Действительно ли нужен уровень детализации 15 МБ или вы можете упростить KML, не теряя слишком много информации?

Вам нужен доступ к вектору / геометрии на стороне клиента? Могут ли эти данные служить изображениями?

Если ни то, ни другое невозможно, вам придется взглянуть на какое-либо программное обеспечение, обслуживающее карту. Наряду с GeoServer из ArcGIS Server вы можете рассматривать MapServer как KML или как WFS. Преимущество использования картсервера заключается в том, что запросы будут возвращать только данные внутри карты, что сокращает сетевой трафик и уменьшает время загрузки.

geographika
источник
После опробования таблиц Google Fusion подход Гудди, безусловно, является наиболее простым для реализации. Вы можете загружать только 100 МБ KML одновременно, но у каждого пользователя есть опция хранения 250 МБ (на момент написания).
география
2

Если вы используете версию 3, вы можете удалить всю атрибутивную информацию, кроме уникального идентификатора, и запрашивать эту информацию через ajax-вызовы веб-службы всякий раз, когда пользователь нажимает на функцию. Если у вас есть баллы более 10 МБ, то, вероятно, неплохо бы выполнить кластеризацию, а не отображать все эти точки одновременно. Также вы можете разделить ваши наземные оверлеи на отдельные файлы KML.

Питер Смит
источник
2

У MapLarge есть интересное решение - они могут реплицировать ваши данные на своих серверах, а затем выполнять тяжелую работу по генерации плиток на лету, используя свое проприетарное программное обеспечение. Они предлагают API-интерфейсы Javascript, которые затем могут накладывать их на базовые карты из Google Maps, OpenLayers и т. Д.

Посмотрите на некоторые из их примеров - скорость впечатляет:

Это не бесплатно, но это может быть хорошим вариантом для тех, кто не хочет, чтобы затраты и затраты стоили отдельного сервера для создания этих слоев.

Херб Каудилл
источник