Как уменьшить точность координат в geojson?
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 18 янв 2017, 14:42
- Репутация: 0
Как уменьшить точность координат в geojson?
Есть несколько наборов координат в формате geojson, которые задают границы нескольких смежных территорий. Эти наборы выводятся на Гугл-карте. Массивы координат большие, точность излишне высокая для используемого кейса.
Координаты идут в таком виде: [38.7251026,45.0403592],[38.7273894,45.0408335],[38.7304689,45.0418444], т.е. семь знаков после запятой.
Собственно, вопрос: как уменьшить точность координат в geojson, чтобы уменьшить общий размер данных? Наверняка есть какие-то методики, чтобы можно было это сделать программно - на входе 10 тыс координат, на выходе - тысяча.
Тут правда, побочный эффект может возникнуть - т.к. отрисовываются границы смежных территорий, и при огрублении границы могут "расползтись". Поэтому если есть методики "огрубления", при которых можно это учесть - вообще классно будет.
Координаты идут в таком виде: [38.7251026,45.0403592],[38.7273894,45.0408335],[38.7304689,45.0418444], т.е. семь знаков после запятой.
Собственно, вопрос: как уменьшить точность координат в geojson, чтобы уменьшить общий размер данных? Наверняка есть какие-то методики, чтобы можно было это сделать программно - на входе 10 тыс координат, на выходе - тысяча.
Тут правда, побочный эффект может возникнуть - т.к. отрисовываются границы смежных территорий, и при огрублении границы могут "расползтись". Поэтому если есть методики "огрубления", при которых можно это учесть - вообще классно будет.
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Как уменьшить точность координат в geojson?
http://gis-lab.info/qa/ogr2ogr-examples ... 0.B8.D1.8F
Но по моему это экономия на спичках. А в средних широтах четвёртый знак это десяток метров.
Но по моему это экономия на спичках. А в средних широтах четвёртый знак это десяток метров.
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 18 янв 2017, 14:42
- Репутация: 0
Re: Как уменьшить точность координат в geojson?
Почему же экономия на спичках? Мож, я чего-то не догоняю, но я так понимаю, что если отбросить некоторое количество знаков, то получится, что некоторые координаты повторяются подряд, и эти повторяющиеся координаты тоже будут отброшены.
Например, если было:
[38.7251026,45.0403592],[38.7251494,45.0403835],[38.7304689,45.0418444]
То будет так:
[38.7251,45.0404],[38.7305,45.0418]
Т.е. две первые координаты будут в одну слиты. Или нет, и число точек останется то же?
Например, если было:
[38.7251026,45.0403592],[38.7251494,45.0403835],[38.7304689,45.0418444]
То будет так:
[38.7251,45.0404],[38.7305,45.0418]
Т.е. две первые координаты будут в одну слиты. Или нет, и число точек останется то же?
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Как уменьшить точность координат в geojson?
Можно и так, там есть настройка выкинуть точки ближе чем Х от предыдущей.
-
- Активный участник
- Сообщения: 153
- Зарегистрирован: 02 авг 2014, 18:29
- Репутация: 24
- Откуда: Москва
Re: Как уменьшить точность координат в geojson?
Прежде всего, что именно вам нужно? Либо понижение точности координат (то есть, сокращение количества цифр после запятой), либо прореживание массива точек — своего рода генерализация.aVadim писал(а):Почему же экономия на спичках? Мож, я чего-то не догоняю, но я так понимаю, что если отбросить некоторое количество знаков, то получится, что некоторые координаты повторяются подряд, и эти повторяющиеся координаты тоже будут отброшены.
Например, если было:
[38.7251026,45.0403592],[38.7251494,45.0403835],[38.7304689,45.0418444]
То будет так:
[38.7251,45.0404],[38.7305,45.0418]
Т.е. две первые координаты будут в одну слиты. Или нет, и число точек останется то же?
Или, может быть, и того, и другого, и можно без хлеба?
Последний раз редактировалось Аминодов-Борисов 26 янв 2017, 09:15, всего редактировалось 1 раз.
-
- Активный участник
- Сообщения: 153
- Зарегистрирован: 02 авг 2014, 18:29
- Репутация: 24
- Откуда: Москва
Re: Как уменьшить точность координат в geojson?
В Питоне, если что, есть функция round(old_number, ndigits), где число old_number округляется до ndigits цифр после запятой. Так что можно какую-то приблуду написать, которая берёт GeoJSON и округляет там все координаты. Они как раз в формате float хранятся.
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 18 янв 2017, 14:42
- Репутация: 0
Re: Как уменьшить точность координат в geojson?
Конечная задача - более быстрая загрузка json-файла и более быстрая его отрисовка на карте. Для этого хотелось выполнить генерализацию (ага, щас я уже знаю, что это так называется). Мне почему-то казалось, что это должно по какой-то хитрой методике делаться (там же все эти проекции хитрые и вот это все).Алексей Борисов писал(а):Прежде всего, что именно вам нужно? Либо понижение точности координат (то есть, сокращение количества цифр после запятой), либо прореживание массива точек — своего рода генерализация.
Или, может быть, и того, и другого, и можно без хлеба?
Как оказалось для моих задач вполне подходит такая метода:
1) делается округление координат до нужной точности
2) повторяющиеся подряд одинаковые координаты выбрасываются
И так за счет уменьшения общего числа знаков в координатах и за счет уменьшения числа точек объем файла может быть уменьшен раза в два без потери качества при отрисовке на карте.
Всем спасибо за советы!
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Как уменьшить точность координат в geojson?
Тогда стоит глянуть в сторону TopoJson
Кто сейчас на конференции
Сейчас этот форум просматривают: Ahrefs [Bot] и 32 гостя