SASGIS - SAS.Планета
View Issue Details
0002440SAS.Планета[All Projects] Хотелкаpublic29-05-2014 04:3902-06-2014 09:09
Waleryth 
vdemidov 
normalminorhave not tried
closedduplicate 
Windows7Ultimate
 
 
0002440: Закидывание через неопределенное время метки из стороннего ПО, например, метки отбор проб.
Я тут поизучал темы на форуме и пришел к выводу что такая небольшая модификация придется по вкусу многим пользователя SAS.Планета. Необходимо чтобы происходила запись трека и одновременно в фоне происходило закидывание меток, например, отбор проб.
1). С треком все понятно.(Для эмуляции трека использовал GPSGate).
2). Для отправки в CAC данных точек я использовал - wm_copydata по handle реализованом в ПО для обработки спектра на VisualBasic.
В CAC я реализовал обработчик для принятия сообщения. далее я разбивал строку на составляющие.

s:=PAnsiChar(MessageData.CopyDataStruct.lpData); //Устанавливаем текст из полученных данных
    tSL := TStringList.create; //создаём класс
    tSL.text := stringReplace(s,';',0000013#10,[rfReplaceAll]); //заменяем все ';' на символы конца строки
//получаем StringList
    In_PointName:=tSL[0]; //название точки
    // tSL[1] //Lat широта Y_
    // tSL[2] //Lon долгота X_
    In_PointDesc:=tSL[3]; //Описание точки

Для добавления точки на карту использовал
при этом указал координаты точки полученные от 'wm_copydata'
VLonLat.X:=X_; //Lon долгота
VLonLat.Y:=Y_; //Lat широта
if FMarkDBGUI.AddNewPointModal(VLonLat) then begin
    FState.State := ao_movemap;
  end;

Далее добавил дополнительную функцию
TMarksDbGUIHelper.AddNewPointModal(const ALonLat: TDoublePoint): Boolean;
которая является аналогом с некоторыми изменениями
TMarksDbGUIHelper.NewPointModal(const ALonLat: TDoublePoint): Boolean;

Долее для установки метки без запуска модальной формы добавления точки закоментил
//VMark := FfrmMarkAddPoint.EditMark(VMark, true, VVisible);

функция получилась так:
function TMarksDbGUIHelpe.AddNewPointModal(const ALonLat: TDoublePoint): Boolean;
var
  VMark: IMarkPoint;
  VVisible: Boolean;
  VResult: IMark;
begin
  Result := False;
  VVisible := true; //коорд, имя точки, описание
  VMark := FMarksDb.MarksDb.Factory.CreateNewPoint(ALonLat, frmMain.In_PointName, frmMain.In_PointDesc);
  //установка точки без запуска модальной формы добавления точки
  //закометнировал вызов формы добавления метки
  //VMark := FfrmMarkAddPoint.EditMark(VMark, true, VVisible);
  if VMark <> nil then begin
    VResult := FMarksDb.MarksDb.UpdateMark(nil, VMark);
    if VResult <> nil then begin
      FMarksDb.MarksDb.SetMarkVisible(VMark, VVisible);
      Result := True;
    end;
  end;
end;

Получается происходит добавление новой точки в фоновом режиме.
Но как предварительно указать тип рисунка метки и категорию куда будет добавляться метка без вызова формы добавления меток.
Может подскажите как предварительно указать тип рисунка метки и категорию куда будет добавляться метка!!!
No tags attached.
duplicate of 0001869resolved zed Обработка внешнего события в САСе с переходом к координатам на карте 
Issue History
29-05-2014 04:39WalerythNew Issue
29-05-2014 05:25vdemidovNote Added: 0014275
29-05-2014 06:02WalerythNote Added: 0014276
29-05-2014 06:24vdemidovNote Added: 0014277
29-05-2014 08:25WalerythNote Added: 0014278
29-05-2014 08:33vdemidovNote Added: 0014279
29-05-2014 09:08WalerythNote Added: 0014280
29-05-2014 09:16WalerythNote Added: 0014281
29-05-2014 09:19vdemidovNote Added: 0014282
29-05-2014 09:22vdemidovNote Added: 0014283
29-05-2014 09:24vdemidovNote Edited: 0014283bug_revision_view_page.php?bugnote_id=14283#r6075
29-05-2014 09:41WalerythNote Added: 0014284
29-05-2014 09:52vdemidovNote Added: 0014285
29-05-2014 10:47zedNote Added: 0014287
29-05-2014 11:13vdemidovNote Added: 0014288
01-06-2014 13:57zedNote Added: 0014304
02-06-2014 08:51vdemidovRelationship addedduplicate of 0001869
02-06-2014 08:53vdemidovNote Added: 0014306
02-06-2014 08:56vdemidovStatusnew => resolved
02-06-2014 08:56vdemidovResolutionopen => duplicate
02-06-2014 08:56vdemidovAssigned To => vdemidov
02-06-2014 08:56vdemidovStatusresolved => closed
02-06-2014 09:04zedNote Added: 0014308
02-06-2014 09:09vdemidovNote Added: 0014309

Notes
(0014275)
vdemidov   
29-05-2014 05:25   
Одно непонятно, зачем для добавления точки в фоне, трогать функции которые называются *Modal, то есть выдает модальное окно? И зачем вообще тогда трогать класс, который отвечает за взаимодействие с пользователем, если нужно фоновое добавление? Нужно просто создавать метку и сохранять ее в базу.
(0014276)
Waleryth   
29-05-2014 06:02   
Извените за глупый вопрос! Это плучается достаточно сделать как описано здесь http://sasgis.org/wikisasiya/doku.php/отображение_на_карте_произвольной_информации_точек_картинок_и_т.п._из_базы_данных
(0014277)
vdemidov   
29-05-2014 06:24   
А это тут при чем? Там описано как поднять отдельный сервер с базой данных и HTTP-сервером, а САС будет просто для него клиентом.
(0014278)
Waleryth   
29-05-2014 08:25   
Может я чего-то не понимаю,если вы имеете ввиду http://sasgis.org/wikisasiya/doku.php/создание_меток - то это не то, меток может быть сотни а может и больше! Я бы хотел чтобы они добавлялись автоматом! И какую базу вы имели ввиду - marks.sml?
(0014279)
vdemidov   
29-05-2014 08:33   
Это вы определитесь, что вы хотете получить.
В статье http://sasgis.org/wikisasiya/doku.php/отображение_на_карте_произвольной_информации_точек_картинок_и_т.п._из_базы_данных
Идет речь об использовании отдельного сервера с Apach, PHP, MySQL.

В статье http://sasgis.org/wikisasiya/doku.php/создание_меток просто описывается ГУЙ пользователя.

А вы изначально спрашивали о работе с метками внутри программы. Определитесь что вас интересует.
(0014280)
Waleryth   
29-05-2014 09:08   
Извините за назойливость. Но попробую мою задумку более четко и подробно описать!
Дапустим имеется прибор для снятия спектра http://nikon-spectra.ru/products/gps/Epoch50/, оператор ходит по сетке и в заданой точке происходит снятие спектра. Точек может быть сотни и каждую вручную забивать как-то трудоемко. Одновременно со снятием спектра происходит запись движения (трека) оператора-пешехода (для этого идеальноподходит САС).
Так вот я хотел в сас реализоать такой механизм который бы автоматически записывал эти самые точки снятия спектра, при этом указывать некое описание точки (Description).
Точки(метки) я смог записать. Но как для этих меток указать категорию, и как указать тип рисунка метки (в зависимости от значения которые будут записаны в Description метки).
(0014281)
Waleryth   
29-05-2014 09:16   
Использование отдельного сервера с Apach, PHP, MySQL - не вариант. Я хочу это реализовать внутри программы только в автономном режиме.
(0014282)
vdemidov   
29-05-2014 09:19   
Просто создать точки с нужными параметрами. То есть вместо вызова Factory.CreateNewPoint вызывать у Factory.CreatePoint и передавать туда все что вам хочется. Добавлять методы в TMarksDbGUIHelper для этого не нужно. Он на то и GUIHelper что бы взаимодействовать с пользователем.
(0014283)
vdemidov   
29-05-2014 09:22   
(edited on: 29-05-2014 09:24)
> Использование отдельного сервера с Apach, PHP, MySQL - не вариант. Я хочу это реализовать внутри программы только в автономном режиме.
Ну это вы про него почему-то упомянули в своем комментарии http://sasgis.org/mantis/view.php?id=2440#c14276
Мне, кстати, этот костыль очень не нравится, еще и устарел слегка. Просто что бы реализовать альтернативу нужно достаточно много сил приложить, а у меня для этого ни сил ни желания нет.

(0014284)
Waleryth   
29-05-2014 09:41   
Небольшое пожелание. Неплохо бы на мой взгляд реализовать возможность подключения какой-нибудь простой бд типа *.gdb или Access а потом просто с этой базой работать типа добавить допустим теже метки со всеми там описаниями, коорд, категориями и т.д. а к этой базе несоставит труда подключится любому и работать с ней.
(0014285)
vdemidov   
29-05-2014 09:52   
Этому пожеланию сто лет в обед. Реализуйте и сделайте пул-реквест после чего и поговорим. А вообще этот тикет нужно закрывать, а вопросы по исходному коду нужно задавать в соответствующей ветке форума. Закрывать как Wan't fix или Duplicate в зависимости от того чего вы таки хотите добиться, потому что я пока не совсем понял. То есть конченая цель понятна, но что от нас хотите получить мне пока не ясно.
(0014287)
zed   
29-05-2014 10:47   
Я так понял, что товарищ вполне готов сам реализовать фичу добавления меток, его просто нужно подтолкнуть в правильном направлении чтобы потом все нароботки можно было принять через пулреквест.
(0014288)
vdemidov   
29-05-2014 11:13   
Ну, я не уверен, что это стоит принимать в основной код. А вот помочь реализовать и подтолкнуть в нужном направлении - всегда пожалуйста. Для этого раздел "Вопросы по исходному коду" и существует на форуме.
(0014304)
zed   
01-06-2014 13:57   
> Ну, я не уверен, что это стоит принимать в основной код.

Почему?
(0014306)
vdemidov   
02-06-2014 08:53   
>Почему?
Потому что с большой вероятность это будет костыль для решения одной конкретной проблемы одного конкретного пользователя и бесполезный для 99% остальных пользователей. Как я себе это представляю я описал в хотелке 0001869 и своего мнения пока не изменил.
(0014308)
zed   
02-06-2014 09:04   
Какой ещё костыль? Тут разговор за --insert-placemark в терминах твоего же описания 0001869:0010996 с единственным отличием, что скорее всего это будет не полная переделка существующего механизма, а лишь минимальное вмешательство в код, для добавления требуемого функционала. И оно будет полезно 100% пользователям, которые задумают управлять САСом извне. А то, что реализация функционала возможно не на 100% будет соответствовать твоим представлениям о том, как это должно быть, ещё не повод говорить о бесполезности фичи.
(0014309)
vdemidov   
02-06-2014 09:09   
Ну, посмотрим, я же сказал, что не уверен. Когда будет пул реквест там и обсудим.