Estou coletando valores X e Y de um serviço web (Twitter) por meio de um script python. A longo prazo, isso durará meses e pretendo parar em torno da marca de 6 milhões de pontos.
As cordas originais que estão sendo obtidas são geográficas WGS84, mas precisarei convertê-las para o WGS Web Mercator projetado. Posteriormente, publicarei esta tabela em um serviço de mapa do ArcGIS Server e o armazenará em cache.
Este é um projeto pessoal para aprender python sem prazo e estava pensando se seria uma boa ideia usar exclusivamente os tipos espaciais nativos do SQL Server?
Meu plano atual não testado:
- CRIAR uma tabela com SSMS, com uma configuração de campo GEOMETRIA (e alguns outros atributos)
- No meu script python, use arcpy ou pyproj para converter os lat / lons no WGS84 no WGS84 Web Mercator (ou posso evitar isso de alguma forma e tudo isso é possível com o SQL?)
- Utilize pymssql para INSERIR registros e insira os pontos no campo GEOMETRIA da tabela.
Minha pergunta é: qual seria uma abordagem boa, simples e eficiente para pegar um par de lat / lons no WGS84 e depois inseri-los em uma tabela do SQL Server usando tipos espaciais do SQL Server e ter uma camada de pontos resultante WGS84 Web Mercator, para que eu possa renderizá-los / consultá-los no ArcGIS Desktop 10.1?
Eu tenho acesso ao arcpy / ArcSDE 10.1, se necessário, mas esperava usá-lo como um exemplo de não exigir o ArcSDE.
Respostas:
Fui em frente com o meu plano, conforme indicado na pergunta.
Com o objetivo de inserir pontos no SQL Server, esta postagem foi muito útil para mim.
Aqui está o que funcionou para mim:
fonte
Não tenho certeza de todos os seus requisitos de fluxo de trabalho, mas se você tiver acesso ao arcpy, poderá usar
arcpy.ConvertCoordinateNotation_management
sua tabela de pontos SQL e convertê-los em uma classe de recurso de ponto em qualquer projeção em que você precisar. Não há necessidade de SQL Tipos espaciais de servidor ou ArcSDE.fonte
Suponho que você tenha um ou vários arquivos grandes preenchidos com xy e alguns outros dados. Primeiro, que eu saiba, não há suporte para projeção no MS SQL (2008 r2 ou posterior). há soluções de terceiros e biblioteca proj.net que você pode usar para criar um. Portanto, vejo duas opções ao armazenar dados no banco de dados, se você estiver usando o MS SQL, precisará reprojetar dados na projeção desejada antes de inserir o banco de dados ou apenas despejar dados no PostGIS db e transformar lá. O PostGIS possui um conjunto de ferramentas muito melhor no banco de dados do que o MS SQL
fonte
geoAlchemy deve fazer o trabalho usando GeometryColumns. No entanto, não consegui fazê-lo funcionar no Windows / Python 2.7 / sqlalchemy 0.9.6 devido ao AttributeError: o objeto de tipo 'ColumnProperty' não tem atributo 'ColumnComparator'
fonte