Estou tentando gerar polígonos para faixas orbitais de satélite. Até agora, tenho um método para gerar duas linhas que representam a borda de cada faixa em [lat, long]. Alguns dos trechos cruzam a linha de dados internacional e, por isso, envolvem-se:
Consegui resolver isso com ogr2ogr
-wrapdateline
:
ogr2ogr -wrapdateline -f "ESRI Shapefile" test.shp orbits.shp
O que divide as linhas provavelmente
Agora eu quero ser capaz de gerar polígonos no interior das duas linhas. Por exemplo, no caso em que uma borda da faixa cruza a linha de dados, um polígono preenche quando emerge do outro lado, como:
Preciso de um método automatizado, pois preciso repetir muito a tarefa. De preferência em python, é assim que eu gerei as linhas. Aqui estão os dois shapefiles que contêm as linhas: envolvente ; datelinefixed
Respostas:
Você pode criar uma projeção mercator personalizada centralizada aproximadamente no centro da faixa. Por exemplo, use para a faixa 25:
Nesta projeção, a faixa não é quebrada pela linha de dados. Você pode criar o polígono a partir da linha.
Em seguida, crie um polígono cortado entre -179,95 ° E e 179,95 ° E no EPSG: 4326:
Reprojete-o também no seu CRS personalizado e subtraia-o do polígono da faixa.
Após reprojetar novamente para o EPSG: 4326, a faixa é dividida corretamente pela linha de dados:
Continue com todas as faixas que cruzam a linha de dados.
fonte
Eu reescreveria o processo de geração de linha swathe para começar e terminar no mesmo espaço longo e longo contínuo. ou seja, se uma linha começasse a 170 ° e terminasse em -170 °, eu reescreveria o processo para terminar em 190 °, sem envolver em -180,180
Então você pode criar polígonos ininterruptos entre suas linhas.
Em seguida, use um processo de clipe para dividir os polígonos nas linhas 180, -180 e deslocar as partes que estiverem fora do espaço -180.180 adicionando ou subtraindo 360 ° conforme apropriado.
Basta fazer tudo antes de salvá-lo com uma determinada projeção / dado
fonte