Anonymous | Login | Signup for a new account | 31-10-24 22:46 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0002048 | SAS.Планета | [All Projects] Хотелка | public | 26-07-2013 07:34 | 31-08-2015 09:20 | ||||
Reporter | vasketsov | ||||||||
Assigned To | vdemidov | ||||||||
Priority | normal | Severity | major | Reproducibility | N/A | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | Windows | OS | Vista | OS Version | Ultimate | ||||
Product Version | 121010 | ||||||||
Target Version | 150915 | Fixed in Version | 150915 | ||||||
Summary | 0002048: Дырки в полигонах | ||||||||
Description | Необходимо в базовых геопримитивах (полигон и т.п.) реализовать поддержку дырок. Также поддержку дырок необходимо реализовать и далее по цепочке использования полигонов, в том числе а) отображение и б) подсказки при наведении. Под дыркой понимается участок внутренней границы полигона. Сам полигон задаётся совокупностью внешних границ (возможно, пересекающихся). Одна дырка принадлежит всегда к одной и только к одной внешней границе. Внутри участка полигона, образованного внешней границей, может быть произвольное количество дырок. Дополнительные формальные условия - непересекаемость дырок одного полигона и невыход дырок за границу своей внешней области - при хранении в памяти и (де)сериализации несущественны, но при редактировании, рисовании, реализации итераторов,... надо будет сделать некое разумное минимально функциональное решение, например, не сохранять и не рисовать дырку, если она нарушает эти условия. | ||||||||
Additional Information | При создании полигона с дырками можно обойтись той же техникой, что и сейчас для разделения участков внешних границ, если использовать другой разделитель. Одну из координат разделителя можно оставить как есть, другую наделить смысловой частью. | ||||||||
Tags | VIP, полигоны | ||||||||
Attached Files | |||||||||
Relationships | ||||||||||||||||
|
Notes | |
(0012208) vdemidov (manager) 26-07-2013 08:25 |
Хорошая идея с использованием второй координаты разделителя при сериализации. |
(0015742) zed (manager) 25-04-2015 11:58 |
Сейчас, как я понимаю, разделителем мульти-геометрий выступает значение NaN и вместо того, чтобы записывать его и в X и в Y, в Y предлагается записать какой-то признак того, что это дырка? |
(0015747) vasketsov (manager) 25-04-2015 15:38 |
Ну, мысль была именно такая. Но на всякий случай надо как-то проверить, не формируются ли в коде точки, где одна из координат NaN. А также не могут ли они прилететь снаружи, или быть введены пользователем. Чтобы дырки плодились только в генераторе дырок. |
(0015748) zed (manager) 25-04-2015 15:41 |
Там ещё есть 4 резервных байта, можно юзать их. Писать туда magic какой-нить. TGeometryPointSML = packed record X: Extended; Y: Extended; Reserved: LongWord; // proper record aligment for backward compatibility end; |
(0015749) vasketsov (manager) 25-04-2015 15:58 |
>можно юзать их Слишком опасно, этот кусок в нормальном числе может быть не проинициализирован, или снаружи прилететь может, на форуме вон руками многие читают и пишут массив lonlat. |
(0015858) zed (manager) 05-05-2015 17:12 |
vdemidov Как планируешь изменять интерфейсы полигонов? |
(0015859) vdemidov (manager) 05-05-2015 17:32 |
Скорее всего сделаю иерархию примерно как в kml, тоесть будет LineRing содержащий примитивный одиночный полигон. А SinglePolygon будет содержать внешний контур и несколько внутренних с типом LineRing. |
(0016358) vdemidov (manager) 09-08-2015 09:32 |
Итого уже есть поддержка дырок в базе меток на SQLite, в мержилке полигонов и экспорте в KML. В базу SML и всякие HLG, SLS сохраняться должно правильно, но пока считывается неправильно. Да и вообще все нужно тщательно проверять. |
(0016359) zed (manager) 09-08-2015 14:02 |
>в мержилке полигонов *частично - создавать умеет, а читать ещё нет (см. TMergePolygonsProcessor.SinglePolygonToClipperPaths) И самое главное, что полигон с дыркой у меня вообще никак не отображается, хотя информацию о метке показывает вроде правдоподобную. |
(0016360) vdemidov (manager) 09-08-2015 14:09 |
Странно. У меня из SQLite базы вроде бы отображалось. Но там еще в построителе полигонов глюки были. |
(0016361) vdemidov (manager) 09-08-2015 14:11 |
> *частично - создавать умеет, а читать ещё нет Ну это тебе виднее. Добавь, если не сложно, поддержку. |
(0016362) vdemidov (manager) 09-08-2015 14:14 |
Еще, редактирование полигонов с дырками превращает их в мультиполигоны. |
(0016363) zed (manager) 09-08-2015 14:32 |
>Добавь, если не сложно, поддержку. Добавлю конечно. Просто, пока не работает отображение, сложно что-либо тестировать. А добавлять что-то без тестирования, как-то стрёмно. Я для теста создал 2 квадрата, большой и маленький, один над другим. И применил к ним XOR операцию (из большого вырезал маленький). Результат операции окрасился верно, с дыркой, полигон сохранился в БД SQLite, но на экране не отображается. Экспорт в kml отработал нормально и GE дырку нарисовал. |
(0016364) zed (manager) 09-08-2015 14:46 |
При дабл-клике по полигону из Управления метками, карта уносится в какую-то неведомую даль. Что-то явно не так с координатами и поэтому оно его и нарисовать скорее всего не может. Хотя в kml все координаты верные и при импорте из него получается мультиполигон именно там, где он и должен быть. |
(0016365) zed (manager) 09-08-2015 14:57 |
Упс. Не заметил пару твоих последних коммитов. Сейчас в даль не уносится и полигон с дыркой отображает. |
(0016401) vdemidov (manager) 23-08-2015 13:30 |
Вроде бы поддержка дырок есть везде, где я собирался ее добавить. Работает редактирование, есть импорт из KML, загрузка из HLG и SLS. Нужно тестировать. Для начала желательно на простых контурах, а то мало ли вон какая бяка в мультилиниях вылезла внезапно. |
(0016402) zed (manager) 23-08-2015 13:39 |
А не хочешь сделать, чтобы при редактировании дырки, перемещение точки ограничивалось внешним контуром и нельзя было бы вытянуть дырку за пределы контура? |
(0016403) vdemidov (manager) 24-08-2015 06:52 |
Честно говоря, пока нет. |
Users who viewed this issue | |
User List | Anonymous (3969x), ygorigor (1x), zed (20x), vdemidov (22x), vasketsov (3x), tds878 (1x), seven (1x), Boogier (1x), GunSmoker (1x) |
Total Views | 4019 |
Last View | 31-10-2024 22:46 |
Issue History | |||
Date Modified | Username | Field | Change |
26-07-2013 07:34 | vasketsov | New Issue | |
26-07-2013 07:35 | vasketsov | Relationship added | child of 0001471 |
26-07-2013 07:39 | vasketsov | Additional Information Updated | View Revisions |
26-07-2013 07:40 | vasketsov | Relationship added | related to 0001877 |
26-07-2013 08:25 | vdemidov | Note Added: 0012208 | |
31-07-2013 08:32 | vdemidov | Status | new => confirmed |
31-07-2013 08:32 | vdemidov | Product Version | => 121010 |
31-07-2013 08:32 | vdemidov | Target Version | => 27xxxx |
25-04-2015 11:58 | zed | Note Added: 0015742 | |
25-04-2015 11:58 | zed | Relationship replaced | child of 0001877 |
25-04-2015 15:38 | vasketsov | Note Added: 0015747 | |
25-04-2015 15:41 | zed | Note Added: 0015748 | |
25-04-2015 15:58 | vasketsov | Note Added: 0015749 | |
05-05-2015 07:21 | vdemidov | Assigned To | => vdemidov |
05-05-2015 07:21 | vdemidov | Status | confirmed => assigned |
05-05-2015 17:12 | zed | Note Added: 0015858 | |
05-05-2015 17:32 | vdemidov | Note Added: 0015859 | |
15-05-2015 19:58 | vdemidov | Tag Attached: VIP | |
17-07-2015 18:03 | zed | Relationship added | related to 0002765 |
29-07-2015 14:56 | vdemidov | Tag Attached: полигоны | |
09-08-2015 09:32 | vdemidov | Note Added: 0016358 | |
09-08-2015 14:02 | zed | Note Added: 0016359 | |
09-08-2015 14:09 | vdemidov | Note Added: 0016360 | |
09-08-2015 14:11 | vdemidov | Note Added: 0016361 | |
09-08-2015 14:14 | vdemidov | Note Added: 0016362 | |
09-08-2015 14:32 | zed | Note Added: 0016363 | |
09-08-2015 14:46 | zed | Note Added: 0016364 | |
09-08-2015 14:57 | zed | Note Added: 0016365 | |
18-08-2015 10:12 | vdemidov | Target Version | 27xxxx => 150915 |
23-08-2015 13:30 | vdemidov | Note Added: 0016401 | |
23-08-2015 13:39 | zed | Note Added: 0016402 | |
24-08-2015 06:52 | vdemidov | Note Added: 0016403 | |
31-08-2015 09:20 | vdemidov | Status | assigned => resolved |
31-08-2015 09:20 | vdemidov | Fixed in Version | => 150915 |
31-08-2015 09:20 | vdemidov | Resolution | open => fixed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |