>Как полигоны не соответствующие представлению Garmin, перевести в их формат.
Радость пока только в том, что изначально их точки не в Географических
координатах, т.е. не Float. И можно достаточно долго строить в памяти
образы (и резать бублики) - это не повлияет на скорость работы.
В эту сторону уже размышлял. Чем больше, тем сумрачнее все становилось. Теоретически, Олехина идея должна прокатить. Практически резать абстрактный полигон без мапбазика даже напополам по прямой, задача не из самых простых.
>Но если даже не освобождать пямять вообще, то можно загрузить
допустим все 36 листов N-37-xx (на место в памяти это не влияет )
что наводит на мысли о возможности склейки.
Дык может, черт с ней, с этой австралией. Главное, чтобы более 50М не требовалось :)).
Конвертор Ингит - Версия 1.2.
Правила форума
Для предотврашения спама первые сообщения вновь зарегистрированных пользователей проходят ручную премодерацию.
Для предотврашения спама первые сообщения вновь зарегистрированных пользователей проходят ручную премодерацию.
|
||
Re: А "склеивать" карты точно будет надо...
>В эту сторону уже размышлял. Чем больше, тем сумрачнее все становилось.
>Теоретически, Олехина идея должна прокатить. Практически резать абстрактный >полигон без мапбазика даже напополам по прямой, задача не из самых простых.
Ну вроде в Ингите полигоны не столь абстрактны.
Во всяком случае у "дыркок" есть признак.
Построив образ, пройтись по "дыркам" и резануть их по кратчайшему пути к "внешнему контуру" - не великая проблема.
Другое дело резать "внешние контуры", если они > 255 точек,
но на первый взгляд, в Ингите так нарисованы только леса.
Посматривать в ручную лениво, надо заставить програмульку поискать,
что еще такое есть...
>что наводит на мысли о возможности склейки.
>Дык может, черт с ней, с этой австралией.
А "клеить" придется вот что: Если формировать точки для GPS
из "Полигонов населенного пункта", то бывает что такой полигон
попадает на соседние листы. И получается из одного населенного
пункта - 2, а то и 3. )
Сергей.
>Теоретически, Олехина идея должна прокатить. Практически резать абстрактный >полигон без мапбазика даже напополам по прямой, задача не из самых простых.
Ну вроде в Ингите полигоны не столь абстрактны.
Во всяком случае у "дыркок" есть признак.
Построив образ, пройтись по "дыркам" и резануть их по кратчайшему пути к "внешнему контуру" - не великая проблема.
Другое дело резать "внешние контуры", если они > 255 точек,
но на первый взгляд, в Ингите так нарисованы только леса.
Посматривать в ручную лениво, надо заставить програмульку поискать,
что еще такое есть...
>что наводит на мысли о возможности склейки.
>Дык может, черт с ней, с этой австралией.
А "клеить" придется вот что: Если формировать точки для GPS
из "Полигонов населенного пункта", то бывает что такой полигон
попадает на соседние листы. И получается из одного населенного
пункта - 2, а то и 3. )
Сергей.
Re: А "склеивать" карты точно будет надо...
: >В эту сторону уже размышлял. Чем больше, тем сумрачнее все становилось.
: >Теоретически, Олехина идея должна прокатить. Практически резать абстрактный
: >полигон без мапбазика даже напополам по прямой, задача не из самых простых.
:
: Ну вроде в Ингите полигоны не столь абстрактны.
: Во всяком случае у "дыркок" есть признак.
:
: Построив образ, пройтись по "дыркам" и резануть их по кратчайшему пути к "внешнему контуру" - не великая проблема.
Почти так, но есть ньюансы. Во-первых, нужно проверять, чтобы линия разреза не пересакала границу ни одного из полигонов региона (а только касалась двух из них своими концами), и во-вторых, нужно проверять, чтобы линия разреза шла "наружу" от дырки и "внутрь" внешнего полигона (иначе может возникнуть глюк, если линии соединения двух дырок с полигоном будут сходиться в одной точке полигона).
: Другое дело резать "внешние контуры", если они > 255 точек,
: но на первый взгляд, в Ингите так нарисованы только леса.
:
: Посматривать в ручную лениво, надо заставить програмульку поискать,
: что еще такое есть...
Для постоты можно свести задачу к предыдущей: после приклеивания дырок к внешнему полигону (в результате чего будет получен один простой полигон, но с возможно большим количеством вершин), пока количество вершин полигона больше 255, искать такую пару вершин, что отрезок с концами в них, направлен внутрь полигона относительно каждой из них, не пересекает границу полигона в иных точках, кроме концов, отсекает от полигона часть с наибольшим количеством вершин, не превышающим 255, и имеет наименьшую длину.
Этот алгоритм позволяет не заниматься разрезанием полигона по вертикали/горизонтали, но есть риск, что объект окажется слишком большим, чтобы уместиться в TRE своего уровня. Так что до этого всё равно прийдётся добраться (я планирую заняться этим после праздников). Этот алгоритм также не так быстр, как порезка полигона по вертикали/горизонтали, но если писать его на C, а не на MapBasic, как знать, может, его скорость и будет приемлема.
Если необходимо, могу описать, как выяснить, направлен ли отрезок от вершины полигона внутрь или наружу его.
: >что наводит на мысли о возможности склейки.
: >Дык может, черт с ней, с этой австралией.
:
: А "клеить" придется вот что: Если формировать точки для GPS
: из "Полигонов населенного пункта", то бывает что такой полигон
: попадает на соседние листы. И получается из одного населенного
: пункта - 2, а то и 3. )
Разве что для получения точки ≈ центроида региона этого населённого пукта (чтобы этот населённый пункт на карте был один, а не два или три). В остальном, во-первых, карту всё равно нужно будет резать на куски для загрузки в GPS по частям, а во-вторых для данного конкретного примера нет ничего страшного в том, что регион населённого пункта будет состять из нескольких частей, поскольку регион населённого пункта всё равно может прийтись резать, если в нём много вершин, или если он состоит из нескольких не связанных регионов.
: >Теоретически, Олехина идея должна прокатить. Практически резать абстрактный
: >полигон без мапбазика даже напополам по прямой, задача не из самых простых.
:
: Ну вроде в Ингите полигоны не столь абстрактны.
: Во всяком случае у "дыркок" есть признак.
:
: Построив образ, пройтись по "дыркам" и резануть их по кратчайшему пути к "внешнему контуру" - не великая проблема.
Почти так, но есть ньюансы. Во-первых, нужно проверять, чтобы линия разреза не пересакала границу ни одного из полигонов региона (а только касалась двух из них своими концами), и во-вторых, нужно проверять, чтобы линия разреза шла "наружу" от дырки и "внутрь" внешнего полигона (иначе может возникнуть глюк, если линии соединения двух дырок с полигоном будут сходиться в одной точке полигона).
: Другое дело резать "внешние контуры", если они > 255 точек,
: но на первый взгляд, в Ингите так нарисованы только леса.
:
: Посматривать в ручную лениво, надо заставить програмульку поискать,
: что еще такое есть...
Для постоты можно свести задачу к предыдущей: после приклеивания дырок к внешнему полигону (в результате чего будет получен один простой полигон, но с возможно большим количеством вершин), пока количество вершин полигона больше 255, искать такую пару вершин, что отрезок с концами в них, направлен внутрь полигона относительно каждой из них, не пересекает границу полигона в иных точках, кроме концов, отсекает от полигона часть с наибольшим количеством вершин, не превышающим 255, и имеет наименьшую длину.
Этот алгоритм позволяет не заниматься разрезанием полигона по вертикали/горизонтали, но есть риск, что объект окажется слишком большим, чтобы уместиться в TRE своего уровня. Так что до этого всё равно прийдётся добраться (я планирую заняться этим после праздников). Этот алгоритм также не так быстр, как порезка полигона по вертикали/горизонтали, но если писать его на C, а не на MapBasic, как знать, может, его скорость и будет приемлема.
Если необходимо, могу описать, как выяснить, направлен ли отрезок от вершины полигона внутрь или наружу его.
: >что наводит на мысли о возможности склейки.
: >Дык может, черт с ней, с этой австралией.
:
: А "клеить" придется вот что: Если формировать точки для GPS
: из "Полигонов населенного пункта", то бывает что такой полигон
: попадает на соседние листы. И получается из одного населенного
: пункта - 2, а то и 3. )
Разве что для получения точки ≈ центроида региона этого населённого пукта (чтобы этот населённый пункт на карте был один, а не два или три). В остальном, во-первых, карту всё равно нужно будет резать на куски для загрузки в GPS по частям, а во-вторых для данного конкретного примера нет ничего страшного в том, что регион населённого пункта будет состять из нескольких частей, поскольку регион населённого пункта всё равно может прийтись резать, если в нём много вершин, или если он состоит из нескольких не связанных регионов.
есть идея (+)
сделать общую карту, большую и толстую :), а прога конвертер сама все порежет.
Alecs
Alecs
Re: есть идея (+)
А пупок у проги не развяжется? :)
|
||
Пупки бывают разные... :-))) (+)
:А пупок у проги не развяжется? :)
Вот к примеру, своей загрузил 0-36-xx, 0-37-xx, N-36-xx, N-36-xx (x 36 лист), итого сразу 144 карты Ингит, и задаю поиск, сортирую по объектам (атрибутам), "средние точки" населенных пунктов нахожу, дороги
с одинаковыми названиями соединяю...
И собственно "тормозов" не наблюдаю.
Сергей.
Вот к примеру, своей загрузил 0-36-xx, 0-37-xx, N-36-xx, N-36-xx (x 36 лист), итого сразу 144 карты Ингит, и задаю поиск, сортирую по объектам (атрибутам), "средние точки" населенных пунктов нахожу, дороги
с одинаковыми названиями соединяю...
И собственно "тормозов" не наблюдаю.
Сергей.
не должен :) (-)
.
Alecs
Alecs
Кто сейчас на конференции
Сейчас этот форум просматривают: Google [Bot] и 97 гостей