2016-11-19 4 views
0

Я разрабатываю проект, где мне нужно определить, какая область покрыта определенным местом. Например:Как определить область данного места на карте в C++?

enter image description here

Предположим, что изображение моя карта, и есть 2 места с данной площади один с желтым цветом, а другой зеленым цветом, так что если я прошу мое приложение: «Какие места покрывают область от 1 до 3 и от А до F? " Он должен сказать мне обоим местам и так далее.

Я думал об использовании матрицы, но мне нужно загрузить 5 карт, каждая из которых, например, вторая, начинается с H и заканчивается на M и начинается с 10 и заканчивается на 30. Так что я не знаете, что еще использовать, какие-нибудь идеи?

ответ

1

Обычно поиск двумерных областей, перекрывающих или пересекающих какой-либо другой регион, является заданием для структуры данных, известной как R-дерево. Места вводятся в R-Tree. Затем вы запрашиваете rtree, чтобы увидеть, какие из них попадают в область запроса. Вы могли либо использовать библиотеку R-Tree C++, либо поместить места в R-Tree в памяти. Или вы можете разместить свои места в базе данных, поддерживающей R-деревья, например sqite. Вы сохраните места в базе данных, а затем внесите их в память, запросив базу данных. Sqlite - это база данных в процессе. Для этого вам не нужно было бы устанавливать отдельный сервер.