Por que o GRASS elimina polígonos ao usar v.generalize?

9

Estou enfrentando um dilema ao tentar usar v.generalize para simplificar polígonos que são similares em tamanho e estrutura aos condados ou estados dos EUA. Freqüentemente, perco polígonos do conjunto de dados após executar um método de simplificação ou suavização neles. O que me preocupa é que não parece haver nenhum padrão consistente para esse comportamento. Em alguns casos, o mesmo conjunto de comandos aplicados a diferentes conjuntos de dados causa resultados completamente diferentes. Como resultado, sou incapaz de desenvolver um fluxo de trabalho repetível e relutantemente começo a procurar outras ferramentas de simplificação que preservam a topologia. Aqui está um exemplo:

# LOAD AND CLEAN
v.in.ogr dsn=counties.shp output=county
v.build.polylines input=county output=county_polylines
v.clean input=county_polylines output=county_clean tool=bpol,rmdupl type=boundary

# SMOOTH AND GENERALIZE
v.generalize input=county_clean output=county_smooth method=sliding_averaging look_ahead=7 slide=1
v.generalize input=county_smooth output=county_general method=douglas threshold=.005

Cada uma das etapas v.generalize resulta no desaparecimento de alguns polígonos. Eu gostaria de entender por que isso acontece. É devido aos recursos sendo carregados na memória insuficiente? Meus parâmetros são "rígidos" o suficiente para fazer com que os recursos sejam excluídos por atenderem a algum tipo de critério de geometria? (Observe que estou perdendo alguns recursos muito grandes.) Existe um problema com a topologia dos recursos descartados que os faz serem apagados? Em relação à última pergunta, suponho que build.polylines e operações limpas que eu faço inicialmente devam cuidar disso, mas não tenho muita certeza e não consigo encontrar boas instruções para resolver isso. Há alguns?

Aprecie todas as idéias que as pessoas podem dar, especialmente aquelas baseadas na experiência pessoal com a ferramenta v.generalize.

Roger

lagerratrobe
fonte
parece que seus dados podem estar em atraso. o que seria suficiente para perder dados com seu limite de 0,005. você pode verificar se está usando um cs planar?
Brad Nesom 10/10
Na verdade, eu me perguntava sobre isso e havia reprojetado uma projeção da Albers Equal Area antes de executar o exposto acima. Aqui estão os parâmetros de projeção: USUÁRIO: 100002 (+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + unidades = m + no_defs) . Ainda tem o mesmo problema.
Lagerratrobe 10/10
Gostaria de saber por que você converte os polígonos em polilinhas. Existe uma razão específica para você não simplificar os polígonos diretamente?
Subterrâneo
Ok, eu retirei a parte v.build.polylines, então "county_clean" agora é uma camada de polígono. Ainda perde várias áreas. Eu pensava inicialmente que isso poderia facilitar a simplificação, mas como "bpol" no v.clean também está quebrando os polígonos, talvez isso não importe.
Lagerratrobe 10/10
11
apenas uma pergunta estúpida. Tem certeza de que está perdendo dados usando v.generalize e não v.clean ?
simo 11/10

Respostas:

4

Resposta da equipe de desenvolvimento GRASS.

"O desaparecimento dos polígonos [na v 6.4.1] ocorreu porque os limites suavizados que violavam a topologia do vetor foram excluídos; depois disso, todos os limites que estavam topologicamente incorretos. Os limites agora [no 6.4.2] agora são suavizados / simplificados apenas se a modificação não violar a topologia vetorial. "

lagerratrobe
fonte