SASGIS - SAS.Планета
View Issue Details
0000163SAS.Планета[All Projects] Хотелкаpublic16-10-2010 13:4624-04-2011 18:24
gpsMax 
vdemidov 
normalminorhave not tried
closedfixed 
101014.Alfa 
110311.Alfa110311.Alfa 
0000163: Доработка окна "Перейти к" (универсальный ввод координат)
Сейчас в SAS.Планете нет возможности перейти по координатам, отличным по формату от dd° mm' ss'', да и даже в этом случае придётся вместо ввода одной строчки вводить цифры в шесть полей.

Поиск в яндексе и в гугле проблему не решает, зачастую они выдают неточные/неверные точки даже для своего родного формата dd.dddddd°.

Хотелось бы вместо имеющихся шести полей вводить строку координат как единое целое, с возможностью полуавтоматического распознавания их формата.
Форматов координат всего три:
dd.dddddd°
dd° mm.mmm'
dd° mm' ss''

Наброски по их распознаванию, последовательно:

1. Подготовка строки
- Все символы, отличные от [0-9'°, ], превращаем в пробелы
- Удаляем начальные и конечные пробелы строки
- Двойные пробелы превращаем в одинарные (возможно сделать небольшой рекурсией)

2. Распознавание
- Если в строке есть '', то это третий вариант. Выход.
- Если нет '', но есть ', то второй. Выход.
- Если нет ', но есть °, то первый. Выход.
- Если в строке только один пробел, то это первый вариант. Выход.
- Если три, то это второй вариант. Выход.
- Если пять, то третий. Выход.
- Если дошли до этого места, значит пользователь ввёл что-то непонятное. Выдаём окошко с некоторым ругательным текстом и ничего более не делаем.
координаты, метки, перейти к
parent of 0000466closed Garl Универсальный ввод координат - 2 
parent of 0000532closed vdemidov Переход на точку 
related to 0000074closed vdemidov Формат представления координат 
related to 0000901closed Garl Определение места по URL из maps.google/yandex 
related to 0001126closed vdemidov Универсальный ввод координат - 3 
Issue History
16-10-2010 13:46gpsMaxNew Issue
16-10-2010 14:54pasha_49Note Added: 0000359
16-10-2010 16:00LedmycNote Added: 0000360
16-10-2010 18:48vdemidovNote Added: 0000361
16-10-2010 18:49vdemidovStatusnew => acknowledged
16-10-2010 18:49vdemidovTarget Version => 29xxxx
17-10-2010 08:34gpsMaxNote Added: 0000362
17-10-2010 08:37gpsMaxNote Edited: 0000362bug_revision_view_page.php?bugnote_id=362#r118
17-10-2010 12:42LedmycNote Added: 0000363
17-10-2010 16:54LedmycNote Edited: 0000363bug_revision_view_page.php?bugnote_id=363#r120
17-10-2010 18:43gpsMaxNote Added: 0000364
20-10-2010 19:56gpsMaxNote Added: 0000373
07-11-2010 19:29gpsMaxTag Attached: метки
07-11-2010 19:29gpsMaxTag Attached: координаты
10-03-2011 09:32vdemidovStatusacknowledged => resolved
10-03-2011 09:32vdemidovFixed in Version => 110311.Alfa
10-03-2011 09:32vdemidovResolutionopen => fixed
10-03-2011 09:32vdemidovAssigned To => vdemidov
10-03-2011 09:33vdemidovTarget Version29xxxx => 110311.Alfa
06-04-2011 16:33gpsMaxTag Attached: перейти к
06-04-2011 16:34gpsMaxRelationship addedrelated to 0000074
07-04-2011 02:57gpsMaxRelationship addedrelated to 0000466
09-04-2011 15:45gpsMaxSummaryДоработка окна "Перейти к" => Доработка окна "Перейти к" (универсальный ввод координат)
09-04-2011 15:45gpsMaxRelationship addedparent of 0000532
09-04-2011 15:45gpsMaxRelationship replacedparent of 0000466
24-04-2011 18:24TolikStatusresolved => closed
10-08-2011 16:00gpsMaxRelationship addedrelated to 0000901
20-01-2012 12:49gpsMaxRelationship addedrelated to 0001126

Notes
(0000359)
pasha_49   
16-10-2010 14:54   
Поддерживаю
(0000360)
Ledmyc   
16-10-2010 16:00   
А если пользователь введёт что-то вроде 53° 32°16′30″?
И как опрнделить, что есть широта, а что — долгота?

Думаю, нужно ещё распознавать N/S, E/W и/или с/ю, в/з, ш и д, а также «-» (минус) в случае S и W. Нужно бы предусмотреть возможность отделения широты от долготы, напроимер, символами ,;/ и др. (символ минуса — и разделитель, и указатель на полушарие).
Если что-то невозможно определить, то предполагаем один из возможных вариантов, спрашиваем о нём пользователя посредством диалогового окна. Нажимает «Да» — хорошо, «Нет» — просим заполнить 6 полей в таком окне, как сейчас.

Но всё-таки надо бы подумать…
(0000361)
vdemidov   
16-10-2010 18:48   
Думайте и пишите парсер. Подробности на форуме http://sasgis.org/forum/viewtopic.php?f=47&t=1114
(0000362)
gpsMax   
17-10-2010 08:34   
(edited on: 17-10-2010 08:37)
>И как определить, что есть широта, а что — долгота?
Если не указано иного, то первое широта, второе долгота. Практически везде традиционно так, начиная от чуть ли не средневековых форм записи координат, и до современных - "...северной широты, восточной долготы..."

Минус, да, упустил. Но он в эту схему отлично ложится, просто будет отрицательное число в координате. В первом шаге подготовки множество годных символов будет включать в себя и минус: [0-9'°, \-]

Пользователя лишними окнами доставать не надо. Если не распознали, то выдаем окошко с небольшой подсказкой по вариантам форматов, вот и всё. Старую форму с шестью полями ввода оставить никто ведь не мешает.

>Нужно бы предусмотреть возможность отделения широты от долготы
Уже. Как минимум, по смыслу там должен быть пробел. Или другой разделяющий символ - всякие запятые, слэши и прочая фигня будет преобразована в пробелы, из которых "выпарены" дубликаты, и останется, опять же, один пробел-разделитель. Такая общая схема позволит вставлять в строку поиска текст со всей словесной обвязкой, например:

... На острове с широтой XXX и долготой YYY градусов...
... http://wikimapia.org/#lat=55.8361928&lon=37.5437164 ...
... http://maps.google.ru/?ll=55.686875,37.471619...

То есть, копируем кусок текста и вставляем в форму, которая его сама очистит от лишнего. Лишь бы лишних цифр не было.

(0000363)
Ledmyc   
17-10-2010 12:42   
(edited on: 17-10-2010 16:54)
Очень интересен второй пример (со ссылкой на карту Google) тем, как всё же должны отделяться целая и дробная части координат — точкой или запятой.
По-моему стоило бы предусмотреть оба варианта и уж на лету определять, какой из них в конкретной строке используется.

>Минус, да, упустил. Но он в эту схему отлично ложится, просто будет отрицательное число в координате.
С минусом поаккуратнее надо бы быть: минус-то ставится один, но относится он и к градусам, и к минутам, и к секундам…

(0000364)
gpsMax   
17-10-2010 18:43   
С таким стремлением учесть все-все-все варианты эта фича долго останется теоретической. Выше описан алгоритм из простых шагов, который на 95% входных данных будет давать стабильно хороший результат. Да, он в некоторых случаях спотыкается и не понимает, чего бы от него хотел пользователь, ну так это ж и не волшебная палочка, а просто чуть расширенная обработка. В SAS нужно хотя бы минимально улучшить функционал по переходу к координатам. А то эта проблема обсуждается более года, и всё это время в программе остаётся старая неудобная для ввода форма.
(0000373)
gpsMax   
20-10-2010 19:56   
Кусочек по поводу вбивания координат в поиск гугла
http://sasgis.org/forum/viewtopic.php?f=2&t=13&p=13038#p12962