Algoritmos adequados para simplificar polígonos de isocrono


8

Estou procurando um algoritmo para simplificar isócronas que foram geradas usando dados OSM.

Eles geralmente são caracterizados como tendo muitos pequenos "buracos" principalmente devido à falta de dados OSM, mas também frequentemente tendo pequenas "ilhas" devido ao uso de transportes como metrôs. Eu tentei várias ferramentas para isso, mas todas são muito agressivas para diminuir o espaço - o mais crítico, para excluir as ilhas. A acessibilidade a essas ilhas de transporte público é muito importante.

Então, ao invés de me concentrar nas ferramentas, eu queria voltar um pouco e perguntar se algum algoritmo específico é adequado ou não adequado a essa tarefa? ou seja, ser agressivo na remoção de buracos, mas conservador em não remover ilhas.

As isócronas começam a vida no formato GeoJSON. Eles eventualmente serão importados para o PostGIS.


Para calcular isócronas mais simples, você pode estar interessado em api.oalley.fr . O algoritmo gera áreas de isócronas sem orifícios. Pode ser visto como uma vantagem ou falha, mas se você precisar de zonas mais simples, poderá estar interessado. Nota: Eu sou um dos desenvolvedores, até agora os cálculos precisam ser aprimorados e isso é principalmente um experimento, mas estamos deixando todos brincar com ele de graça.
Overdrivr

Respostas:


2

Talvez a resolução comece do início?

Para que lado você está criando isócronas?

Estou usando pg_routing e ele retorna um conjunto de arestas alcançáveis ​​no tempo especificado, em vez de um polígono, para que eu possa desenhar polígonos a partir desses dados da maneira que eu quero - eu posso usar st_ConvexHull, st_ConcaveHull, st_Buffer ...

A primeira função é como colocar algo no balão de borracha, a segunda é como sugar o ar deste balão, e essa função pode ser que você esteja procurando porque ele retornará geometria representa uma geometria possivelmente côncava que inclui todas as geometrias dentro do conjunto e tem parâmetro impedindo furos na geometria retornada ...

Mas ainda não tenho certeza se é um bom caminho - você terá uma geometria que não será verdadeira, porque você não pode pular do trem enquanto ele está correndo. Talvez você precise usar ST_ExteriorRing para obter furos e depois st_simplify para simplificar as geometrias?

Adicione um comentário que me guie para o caminho certo, se você acha que essa resposta pode ser útil para que eu possa editá-la novamente para que esteja correta.


Estou usando o OpenTripPlanner para gerar isócrones. O pgRouting parece não ter suporte adequado ao horário de transporte público de GTFS / transporte público, por isso fui com o OTP. Minha idéia é fazer com que o OTP gere com alta precisão, para que apliquem minha própria suavização personalizada. Concordo que o "pular de um trem enquanto ele está em movimento" seria um problema fatal com as isócronas - daí o motivo pelo qual as ilhas precisam estar lá.
rgareth4
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.