ГИС: Какую использовать структуру данных?
От: RolandD  
Дата: 25.08.10 11:12
Оценка:
Такая задача:

Делаю свой labeling. То есть для каждого объекта на карте необходимо рядом нарисовать некую подпись. Необходимо, чтобы уже нарисованные лейблы не перекрывались.

Можно попробывать сделать так:

//Создаем объект Geometry, который будет содержать мультигеометрию уже нарисованных объектов
Geometry unionOfProcessed = null;

// Берем след. объект карты f. 
f = getNextMapFeature();

// проверяем, что подпись для этого объекта не пересечется с уже нарисованными
if (unionOfProcessed == null || !unionOfProcessed.intersects(f.getGeometry()))
{
  if (unionOfProcessed == null)
  {
    unionOfProcessed = f.getGeometry();
  }
  else unionOfProcessed = unionOfProcessed.union(f.getGeometry()); 

  drawLabel(f.getGeometry(), getLabelString(f)); // где и что нарисовать
}


Это тормозит для моего количества данных.

Я правильно понимаю, что нужно поддерживать некий пространственный индекс, по нему быстро искать уже отрисованные и смотреть не пересекаются ли они со следующим обьъектом, для которого хотим нарисовать подпись.

Какую лучше использовать структуру данных для такого 'инкрементального' индексирования?
Посоветуйте java-библиотеку для этого?

???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.