Sob demanda, consulte o conjunto dos arquivos GeoParquet para extrair os dados desejados- Esta consulta usa uma cláusula SQL simples mas poderosa<\/STRONG>, continue lendo...<\/LI><\/UL>
Aqui está uma consulta exemplo onde extraio numa classe de feição na memória todos os casos 311 até hoje para 2026 dentro de um polígono - Isto levou 4 segundos. Há cerca de 8500 feições.<\/P>
Consulta San Francisco<\/span><\/P>A ferramenta consulta é uma ferramenta script, seu segredo é a cláusula QUALIFY. Os arquivos GeoParquet feitos a partir dos dados diários terão duplicatas devido ao ciclo de vida do caso (aberto num dia, editado noutro dia, fechado num dia posterior) então só queremos a linha mais recente por valor service_request_id entre todos os arquivos GeoParquet - a cláusula QUALIFY ao consultar os dados parquet faz isso por nós.<\/P> conn.sql(f"""create or replace temp view sf311_view as select
service_request_id,requested_datetime,closed_date,updated_datetime,
status_description,status_notes,agency_responsible,service_name,
service_subtype,service_details,address,street,supervisor_district,
neighborhoods_sffind_boundaries,police_district,source,media_url,
bos_2012,data_as_of,data_loaded_at,ST_AsWKB(GEOM) as wkb
from read_parquet('{pqPath}',filename=false)
where {where}
and ST_Intersects(ST_GeomFromText('{wkt}'), GEOM)
qualify row_number() over (partition by service_request_id order by updated_datetime desc) = 1;""")<\/code><\/pre> <\/P>Então agora temos uma simples forma de entregar dados que mudam rapidamente de maneira cloud native com consultas rápidas.<\/P>E se tivermos dados bastante grandes, mas nenhuma forma de consultar as mudanças?<\/P> <\/P>Inserções, Atualizações e Exclusões Contínuas de Edições<\/H3> <\/P>Dados sujeitos a edição pesada versionada por ramificação são trabalho de alto valor para GIS, e embora você possa compartilhar o estado dos dados dando acesso aos seus serviços de feição subjacentes, adicionar uma carga pública de mapeamento ao servidor não será bem-vindo pelo administrador. Acontece que você pode compartilhar o estado dos dados, com suporte para viagem no tempo, usando uma abordagem cloud-native<\/STRONG>. O que possibilita isso é o modelo de dados somente inserção<\/STRONG> do versionamento por ramificação<\/STRONG> - o estado de uma feição em qualquer momento é determinado por GDB_FROM_DATE em combinação com OBJECTID - a linha com o último GDB_FROM_DATE para cada valor único de OBJECTID é o estado atual de uma feição, e se você consultar valores anteriores de GDB_FROM_DATE você obtém viagem no tempo. O único truque é fazer arquivos GeoParquet que representam momentos de edição, mas então a cláusula QUALIFY vem ao resgate novamente para entregar os dados que você quer.<\/P>Aqui estão duas visualizações dos dados de parcela sobre a mesma extensão e usando os mesmos arquivos fonte GeoParquet<\/STRONG>.<\/P>
Momentos atuais e anteriores<\/span><\/span><\/P>A visualização à esquerda é o momento mais recente, a visualização à direita é em um momento anterior, você pode ver que muita subdivisão de parcelas ocorreu. A fonte dos dados mantém todo o histórico dos dados, edições resultam na adição de novos arquivos GeoParquet a uma pasta ou armazenamento de objeto na nuvem. Aqui eu tenho um arquivo GeoParquet base de 1,46GB para o estado original dos dados com alguns pequenos arquivos GeoParquet contendo edições ao longo de duas semanas.<\/STRONG><\/P>
Arquivos GeoParquet contendo histórico completo dos dados<\/span><\/span><\/P>Aqui está um manifesto do arquivo para download do blog CloudNativeDataDistribution.zip<\/STRONG>:<\/P>ImportCurrentDivisionAreas.ipynb<\/STRONG> notebookFaz download das feições Division Area do Overture para seu geodatabase doméstico do projeto<\/LI>Cria nomes multilíngues para feições em uma tabela relacionada<\/LI>Cria ou atualiza um localizador usando as feições Division Area como dados de referência<\/LI><\/UL><\/LI>GetBaselineSF311<\/STRONG> ferramenta ETL espacialExtrai o conjunto completo 311 para San Francisco para GeoParquet<\/LI>Requer ArcGIS Data Interoperability<\/LI>Requer uma conta e token do app<\/LI><\/UL><\/LI>GetUpdatesSF311<\/STRONG> ferramenta ETL espacialExtrai dados de casos 311 mais recentes do que qualquer um em um arquivo GeoParquet existente<\/LI>Cria um novo arquivo GeoParquet<\/LI>Requer ArcGIS Data Interoperability<\/LI>Requer uma conta e token do app<\/LI><\/UL><\/LI>Generate311Points <\/STRONG>ferramenta scriptDemonstra o uso dos arquivos GeoParquet para criar uma classe de feição em memória<\/LI><\/UL><\/LI>ExtractCurrentParcels.ipynb<\/STRONG> notebook
Demonstra extração do estado mais recente dos dados dos arquivos GeoParquet em um modelo de dados versionado por ramificação<\/LI><\/UL><\/LI>ExtractEarlierParcels.ipynb<\/STRONG> notebookDemonstra extração de um estado anterior dos dados dos arquivos GeoParquet em um modelo de dados versionado por ramificação<\/LI><\/UL><\/LI><\/UL>NÃO incluídas, mas disponíveis mediante solicitação, estão as ferramentas usadas para construir os arquivos GeoParquet para os dados das parcelas. Lembre-se, onde minhas ferramentas exemplo usam armazenamento local para GeoParquet, em produção você usaria um armazenamento de objeto na nuvem, como AWS S3.<\/P>Agora, enquanto espero vê-lo na User Conference 2026 em San Diego, se precisar de mais incentivo aqui está uma prévia exclusiva de uma demo trazendo os dados do tema Overture Building para uma cena. Veja se consegue encontrar algumas ferramentas script easter egg no download do blog 😉<\/span>.<\/P>
Overture Buildings<\/span><\/span><\/P> <\/P>