Estou tentando encontrar um algoritmo que possa determinar os menores polígonos possíveis para cobrir vários pontos.
Eu sei como obter o casco convexo em torno de todos os pontos, mas digo que os pontos estão localizados em ilhas diferentes, é possível determinar que existe uma lacuna entre os diferentes grupos e obter polígonos separados para cada grupo?
Respostas:
Parece que você precisa de um algoritmo de agrupamento (por exemplo, agrupamento K-means) primeiro, seguido de um casco (casco convexo, mas um casco côncavo pode ter uma área menor, mas mais difícil de implementar).
fonte
A ferramenta "Clustr" que usamos (d) no Flickr para gerar os shapefiles derivados de fotos com identificação geográfica pode ser útil:
https://github.com/straup/Clustr
(O Stackexchange está me impedindo de adicionar mais de 2 links nesta postagem. Se você pesquisar "a forma de alfa", poderá encontrar a postagem do blog code.flickr que fizemos quando anunciamos os shapefiles.)
Ele foi projetado para tentar gerar o contorno a partir de um saco de pontos em constante mudança (também conhecido como fotos). Os bits matemáticos reais estão aqui:
http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Alpha_shapes_3/Chapter_main.html
Clustr tem alguns bugs conhecidos, mas geralmente funciona, na maioria das vezes ...
fonte
do ponto de vista do banco de dados, parece que você deseja agrupar os pontos nas ilhas e fazer um casco convexo em cada grupo.
no postgis, seria algo como:
/ Nicklas
fonte
arcpy.AggregatePoints_cartography (pntGeometryList, outAppendFeatureClass, buffer_radius)
Onde pntGeometryList é sua lista de pontos, outAppendFeatureClass a classe de característica que a agregação criará e buffer_radius, que determinará os links entre cada ponto 'externo'.
fonte
No começo, pensei que a sugestão de Dan para k-means fazia sentido, mas depois de examinar os resultados do conjunto de dados do mouse na página da wikipedia para k-means , parece que o cluster de Expectativa-Maximização está mais próximo do que você deseja.
fonte