Упрощение списка сегментов с помощью JTS

Я тестирую библиотеку JTS (Java Topology Suite), чтобы посмотреть, смогу ли я упростить список сегментов. Правда в том, что я очень мало знаю об этой библиотеке, и я новичок в программировании, поэтому я не знаю, возможно ли то, чего я пытаюсь достичь.

Я хочу преобразовать список MULTILINESTRING, как показано ниже:

MULTILINESTRING ((0 0, 50 50), (50 50, 100 100, 150 50), (50 150, 100 100, 150 150), (20 20, 80 80), (40 160, 70 130), (110 110, 140 140))

В это:

MULTILINESTRING ((40 160, 150 50), (0 0, 150 150))

Другими словами, я хочу получить список с максимальным количеством сегментов с точки зрения длины. Возможно ли такое преобразование, и если да, то как?

Большое тебе спасибо.


person Matías Benzo    schedule 17.04.2020    source источник


Ответы (1)


Невозможно получить ответ, который вы предлагаете, исключительно с помощью методов JTS. Самое близкое, что вы можете получить, это:

  • узел линии с помощью Geometry.union()
  • объединить линии с узлами, используя LineMerger
  • упростить работу с линиями с помощью DouglasPeuckerSimplifier с небольшим допуском

Это даст вам:

MULTILINESTRING ((0 0, 100 100), (40 160, 100 100), (100 100, 150 150), (100 100, 150 50))
person dr_jts    schedule 20.04.2020
comment
Большое спасибо, Мартин! С наилучшими пожеланиями. - person Matías Benzo; 21.04.2020