Lev Serebryakov ([info]blacklion) wrote,

Как бы поэффективнее хранить точки из GPX…

…с одной стороны у них может быть дофига атрибутов. С другой — может и не быть и большинства скорее всего не будет, тратить память под указатели на них — как-то нелепо… Собрать всё нечастое в отдельный классик и хранить указатель на него? Сделать вообще всё неосновное в property bag?
Update Язык — Java, «точки из GPX» — это точки в пространстве с двумя обязательными атрибутами (longitude, latitude) и массой дополнительных атрибутов (даже время и высота опциональны, а там ещё пяток строк и десяток чисел может быть) из GPS-трека.
Tags: abstract question, software

  • Post a new comment

    Error

    Your IP address will be recorded 

  • 43 comments

[info]lionet

May 3 2009, 15:10:42 UTC 3 years ago

Язык какой?

[info]blacklion

May 3 2009, 15:13:06 UTC 3 years ago

Стыдно сказать — Java :)
Что-то я вот день на ней пишу и уже сомневаюсь, не стоило ли на JS писать :)

[info]lionet

May 3 2009, 15:17:31 UTC 3 years ago

Во-во, что-то в таком духе ;)

[info]blacklion

May 3 2009, 15:21:27 UTC 3 years ago

Но там предвидится, по мимо чтения-записи формата, куча числяка над треками…
И натурально, надо уметь переваривать сотни тысяч точек… Вот я и задумался — не слишком ли это для JS. Да ещё рисовать всё это дело разом (OpenLayers?)…
Не сдохнут ли бразуеры (да даже хром) от такого?

[info]lionet

May 3 2009, 15:51:38 UTC 3 years ago

Используй Canvas, инчего не сдохнет.

[info]blacklion

3 years ago

[info]blacklion

May 3 2009, 15:29:13 UTC 3 years ago

Если бы не UI, я бы точно рискнул Хаскелл на этой задаче поизучать — благо это фильтрация, фильтрация, фильтрация — самое то для функциональных языков. с другой стороны, фильтрацию я уже и на перле изобразил в первом приближении, но ведь надо ещё показывать пользователю и давать параметры по картинке крутить — а тут куда ни кинь возня с GUI :( Не люблю :(

[info]lionet

May 3 2009, 15:50:28 UTC 3 years ago

OCaml возьми. Или gtk2hs + Haskell. Есть GUI.

[info]plumqqz

May 3 2009, 15:34:18 UTC 3 years ago

Базу возьмите, атрибуты - могут быть null, в худшем случае оверхед на отсутствующий атрибут - 1 бит. "Сотни тысяч точек" - это, в общем, совсем немного. Раз гуй - то скорость особо не требуется. В общем, не вижу препятствий.

[info]blacklion

May 3 2009, 15:42:47 UTC 3 years ago

Базу, при всей моей любви к ним, не хочу. Это предполагается продукт (open source) для енд-юзера, просто "скачал и запустил" — базу требовать… Хотя…
Хм… Если Взять SQLite… Надо подумать.
Хотя всё одно всякими скользящими окошками по 200 штук в окне по базе бегать неудобно… Всё равно в массивы выдёргивать… Но только координаты… Хм-хм-хм.

[info]_navi_

May 3 2009, 23:44:22 UTC 3 years ago

если Java, то есть всякие embedded db родные для неё.

[info]blacklion

May 3 2009, 15:45:03 UTC 3 years ago

Скорость требуется на обработке всего этого — там я собираюсь много что считать, а потом уже показывать пользователю результат для проверки :)

[info]plumqqz

May 4 2009, 06:00:37 UTC 3 years ago

Дык понятно, что будет в случае жабы - она усосет в итоге все эти 100к точек к себе раз несколько, и быстро не будет уже точно.

[info]blacklion

May 4 2009, 06:04:02 UTC 3 years ago

Я чуток оптимистичнее, видя что умеет JIT изнутри. Хотя памяти съест больше, конечно, чем какой-нибудь plain C.

[info]plumqqz

May 4 2009, 06:57:18 UTC 3 years ago

Я вижу, что оно вытворяет снаружи, и, думаю, что сам излишне оптимистичен :-)

[info]nealar

May 3 2009, 17:04:28 UTC 3 years ago

делает стойку на слово GPX

А зачем это вообще?

[info]blacklion

May 3 2009, 17:09:10 UTC 3 years ago

Re: делает стойку на слово GPX

Не нашёл ни одного приличного тулза для обработки сырых треков от SirfStar-III (ну и остальных, но у меня-то интерес в нём, конечно). Там по результатам макетирования можно делать гораздо более умные вещи, чем все делают — и искать места характерных для SirfStar-III плясок на месте, и разбивать треки по изменению скорости (шли пешком/поехали на машине), и фильтровать умнее чем “каждая 20-ая точка или каждая 20-ая секунда” и много что ещё.

[info]nealar

May 3 2009, 17:28:03 UTC 3 years ago

Re: делает стойку на слово GPX

Надо [info]slazav задачку закинуть. Или он это уже умеет, или имеет сказать что-то умное на тему. У меня Garmin, но разбивать по скорости и кой-чего ещё тоже очень хочется.

[info]blacklion

May 3 2009, 17:28:56 UTC 3 years ago

Re: делает стойку на слово GPX

У тебя какой гармин? :) Формально у меня тоже гармин. А внутри — сирфстар-3.
У меня GPSMap 60CSx

[info]nealar

May 3 2009, 17:35:00 UTC 3 years ago

Re: делает стойку на слово GPX

У меня Etrex Vista C. Характерного дрейфа на месте, который бывает в наладонниках с Sirf III не видел. Зато чувствительность хуже.

[info]blacklion

3 years ago

[info]nealar

3 years ago

[info]blacklion

3 years ago

[info]nealar

3 years ago

[info]blacklion

3 years ago

[info]nealar

3 years ago

[info]blacklion

3 years ago

[info]llivejo

May 4 2009, 00:39:24 UTC 3 years ago

Re: делает стойку на слово GPX

а не проще дописать пару фильтров в gpsbabel?

[info]nealar

May 4 2009, 00:47:02 UTC 3 years ago

Re: делает стойку на слово GPX

А гуй к нему как прицепить?

[info]blacklion

May 4 2009, 05:40:51 UTC 3 years ago

Re: делает стойку на слово GPX

Нет. Потому что всё равно это операция не 100% автоматическая — надо показывать трек на экране (а желательно — на карте, но это совсем далёкие планы) с флажочками “вот тут мы подумали что глюк чипсета а вот тут мы подумали что сменился транспорт и вот тут что-то странное — из статистики кусок выбивается но мы не поняли как” и давать пользователю разбираться.

[info]llivejo

May 8 2009, 03:32:24 UTC 3 years ago

Re: делает стойку на слово GPX

ладно, тогда может посмотреть в сторону уже готового? зачем заново велосипед изобретать?

http://activityworkshop.net/software/prune/

[info]blacklion

3 years ago

[info]llivejo

3 years ago

[info]blacklion

3 years ago

[info]llivejo

3 years ago

[info]blacklion

3 years ago

[info]llivejo

3 years ago

[info]blacklion

3 years ago

[info]blacklion

3 years ago

[info]llivejo

3 years ago

[info]blacklion

3 years ago

[info]zamotivator

May 4 2009, 09:18:53 UTC 3 years ago

Рискну предложить pointer-to-implementation + decorator.
interface IOptional
{
pure virtual IPropery getProperty( EPropertyTag a_tag );
}

У основного класса:
virtual IProperty getProperty( EPropertyTag a_tag )
{
m_impl.getProperty( a_tag );
}

generic< EPropertyTag tag >
class SomeOption : IOptional
{
virtual IProperty getProperty( EPropertyTag a_tag )
{
if( tag == a_tag )
{
return m_someField;
}
}
}

Второй вариант - завести хеш-словарик из атрибутов в значения.

Канделябром прошу не бить, сами мы не местные.

[info]zamotivator

May 4 2009, 09:20:51 UTC 3 years ago

Ах да, самое важное - в первом вариант все проперти выставиваются в односвязный список

if( tag == a_tag )
{
return m_someField;
}
else
{
 if( null != m_next )
 {
   return m_next->getProperty( a_tag );
 }
 else
 {
   throw CSearchException(a_tag);
 }
}
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…