Pergunta praticamente da mesma forma que isso , mas eu preciso usar o PostGIS.
Eu tenho várias polilinhas e quero transformá-las em pontos a cada n metros, ao longo dessas linhas.
editar: Muito obrigado a Stefan. Minha consulta final foi um pouco diferente, provavelmente devido à versão mais antiga do PostGIS (1.5), mas no final consegui o que era necessário. Os pontos foram combinados em um mapa de calor da densidade das estradas.
Respostas:
Esta consulta deve fazer o truque:
Inicialmente, você seleciona as cadeias de linhas distintas da coluna cadeia de polilinhas com
ST_Dump
É necessário definir os elementos de medida com
ST_AddMeasure
, começando com 0 (início da cadeia de linhas) e o final da cadeia de linhas (o mesmo que o comprimento da cadeia de linhas).Generate_series
cria uma série sobre essa medição na etapa 10. Aqui você pode definir"n metres"
(neste exemplo, 10 metros). Oi
valor começa de novo para cada cadeia de linhas.Com
ST_LocateAlong
eST_GeometryN
você cria uma geometria de ponto multidimensional.Finalmente, você precisa extrair os valores X e Y dessa geometria e criar um ponto a partir dela.
O resultado pode ser assim:
EDITAR
Para ser justo, quero adicionar essas informações: A idéia e a consulta nesta resposta são extraídas de uma consulta que estou usando para criar linhas de cortina de DEMs no PostGIS. A excelente implementação disso é explicada neste artigo por Mathieu Leplatre.
fonte
WITH line AS
é usado? Não vejo 'linha' em outro lugar.WITH Query
fornece o uso de tabelas temporárias para consultas maiores. Aqui estão algumas informações: postgresql.org/docs/8.4/static/queries-with.html .line
é usado na próxima subconsultalinemeasure
. Os dados selecionados nesta subconsulta são baseados nas seleções feitas naline
subconsulta. Eles são construídos um sobre o outro. Espero que tenha ajudado!st_locate_along_measure
.