Encontrar a distância entre pontos ao longo de um rio (referência linear)

10

Eu sou novo em gis e estou impressionado. Eu tenho uma rede de rios que é composta de pequenas cadeias de linhas (polilinhas). Em um shapefile diferente, tenho locais de várias estações em um rio. Preciso encontrar a distância ao longo do rio de cada estação até o final do rio.

O problema é que não tenho uma cadeia completa de rios. E não há atributo comum que eu possa usar para unir ou mesclar as cadeias de linhas. Além disso, algumas estações estão em tributários.

insira a descrição da imagem aqui

Portanto, o ponto principal é que preciso criar uma grande rede de rios, incluindo afluentes, e fazer referência a navios. Mas eu não sei como fazer isso. Qualquer ajuda é profundamente apreciada. Por favor, explique o mais claramente possível.

Por favor, comente se você precisar de mais informações.

Naresh
fonte
3
Qual plataforma de software você está usando?
TheSteve0
Eu tentei o arcmap arcinfo. Mas estava sobrecarregando informações sobre referência linear. Então mudei para pgRouting e QGIS. Ainda lutando.
Naresh
Você tem acesso à extensão ArcGIS Network Analyst? Eu acho que seria possível construir um conjunto de dados de rede usando seus rios e, em seguida, encontrar distâncias mais curtas deve ser realmente fácil.
Radek

Respostas:

2

Eu concordo com BWill. Seu principal problema é definir a origem de cada polilinha. O que constitui um 'rio'? Ι assumiria que um tributário é uma "rota" autônoma a partir de 0-> comprimento do tributário. Então eu faria o mesmo para os rios principais, mas nesse caso eu criaria uma polilinha mesclada a partir de todas as polilinhas constituintes. Eu acho que uma vez que você tem que está "quase" lá. Então: converta todas as polilinhas mescladas em polilinhas medidas (PolylineM), incluindo os tributários. Você tem sua 'rede de rotas'. A partir daí, é uma questão de encontrar a distância ao longo do seu percurso para cada estação. Eu acho que os locais das estações são definidos em XYs? Além disso, outro palpite, eles não caem exatamente no topo do rio, Eles? De qualquer forma, você precisará encontrar uma distância da estação desde o início de cada rio ou triburário. Em teoria, se uma estação estiver na interseção do rio e do tributário, ela poderá ter 2 locais (um para cada).

Para encontrar esse local, você pode usar as ferramentas do ArcMap, mas não as utiliza há um tempo, por isso não consigo me lembrar do topo da minha cabeça. Por outro lado, se você importar seus shapefiles (?) Para o PostGIS, poderá usar o ST_Line_Locate_Point . Esta função:

Retorna um ponto flutuante entre 0 e 1 representando a localização do ponto mais próximo em LineString ao ponto especificado, como uma fração do comprimento total da linha 2d.

O que significa que você pode encontrar o local ao longo do rio multiplicando o que encontra pelo comprimento do rio (mesclado). Uma observação final - se você usa o PostGIS, não precisa passar pela etapa de criação do PolylineM; somente o ArcGIS exige isso para referência linear.

Espero que isso faça sentido!

mapoholic
fonte
minhas estações são exatamente nos afluentes ou rio. O estúpido é que não existe um rio grande, apenas pequenos segmentos de linhas. Eu posso ver um rio grande, mas os dados em si não têm nenhum atributo comum para formar um rio cheio. Além disso, tenho coordenadas em graus; portanto, quando crio rotas no mapa do arco, obtenho comprimento em graus? Eu acho que isso não faz sentido. Eu consegui converter as coordenadas de wgs84 em alguma outra projeção. E sim, importei shapefiles no PostGIS.
Naresh
1

Da minha pergunta da mesma natureza,

Como criar um ponto ao longo de uma linha dada a distância

os seguintes links úteis surgiram.
grass.osgeo.org/gdp/html_grass63/lrs.html
wiki.faunalia.it/dokuwiki/doku.php/qgis/lrs

Não concluo minha tarefa por falta de esforço. Acredito que o tédio que você experimentará está indicando a origem de cada polilinha.

BWill
fonte
2
eu fiz algum progresso. Posso encontrar o caminho mais curto usando o pGrouting, mas preciso atualizar "nós". Agora eu crio uma tabela de nós no postgresql e a uso para criar uma rede que eu alimento para o pgrouting. Mas eu preciso adicionar nós personalizados na tabela que não estão nos nós finais. A maneira estúpida é dividir minhas polilinhas nas estações para que elas se tornem nós automaticamente. Ainda trabalhando. Atualize em breve.
Naresh