Vou ministrar um curso na universidade local, intitulado Ciência da Computação para Tecnologias Geoespaciais. Este é um curso introdutório destinado a introduzir conceitos de ciência da computação para estudantes de tecnologias geoespaciais (GIS e Sensoriamento Remoto). No passado, introduzi conceitos de programação, mas descobri que isso passou por muitas das cabeças dos alunos.
Atualmente, estou planejando discutir hardware de computador, tipos de dados espaciais (por exemplo, shapefiles x geodatabases), Modelo de Geodatabase da ESRI (a universidade trabalha em uma plataforma ESRI), teoria básica de banco de dados com o ArcSDE Personal.
Alguém poderia recomendar outros tópicos relacionados à ciência da computação que os profissionais de GIS e Sensoriamento Remoto deveriam conhecer antes de ingressar na força de trabalho?
ATUALIZAÇÃO: O currículo dos últimos anos incluiu:
- API Javascript do Google Maps / HTML / Google Earth / KML - 5 semanas
- Script Python - 6 semanas
- Teoria de banco de dados / MS Access - 2 semanas
- VBA - 2 semanas
A resposta que recebi dos alunos foi que não havia tempo suficiente em cada tópico. Estou falando com a universidade para oferecer um curso de próximo nível em Programação GIS usando Python.
Respostas:
Em 15 anos respondendo perguntas de GIS sobre servidores de listas e, agora, páginas da Web, observei alguns problemas recorrentes que sugerem a necessidade de os profissionais aprenderem certos conceitos específicos de computação. Nada disso é profundo; tudo isso é bem conhecido; mas todas parecem ser deficiências comuns nos antecedentes ou no entendimento de uma minoria significativa (maioria?) das pessoas de GIS. Em muitos casos, pouco precisa realmente ser aprendido além de uma definição ou exemplo. O objetivo é alertar os alunos sobre as armadilhas que surgirão e fornecer a eles os princípios ou ferramentas de que precisam para lidar com eles quando surgirem, sem necessariamente se tornarem especialistas.
Todos os links da lista a seguir vão para perguntas neste site. A mera existência desses links fornece evidências do valor dos conceitos. Seguindo os links, você pode encontrar exemplos de como o conhecimento desses conceitos pode resolver problemas, impedir que eles aconteçam e ajudar as pessoas a serem mais proficientes em GIS.
Sistemas de computação
Os componentes de um computador: abra uma caixa, desmonte-a, identifique as peças (CPU, RAM, discos, placa-mãe, placa de rede etc.) e explique suas funções no sistema. Desmistifique-o e torne-o concreto para os alunos.
Compreensão de como os sistemas de computação armazenam dados em dispositivos externos . Conceitos de formatos físicos e lógicos. A distinção entre ASCII (e codificações similares) e binário bruto.
Detalhes da representação binária interna de dados numéricos, incluindo IEEE flutua precisão simples e dupla e inteiros assinados e não assinados . Limitações de cada um. Como escolher qual tipo de dados usar para representar atributos GIS.
A distinção entre armazenamento externo e RAM . (Eu sei que isso é incrivelmente elementar, mas há muita confusão por aí.)
Ciência da Computação
Análise assintótica de algoritmos . Compreendendo, em um nível prático, as diferenças entre O (n), O (n log (n)), O (n ^ 2) e (e pior) o tempo. Como testar como um algoritmo de caixa preta é escalado.
Princípios de interação humano-computador. Isso é muito amplo, mas alguns princípios de design de formulário e design de página da Web podem percorrer um longo caminho.
Princípios das linguagens de computação: o que esperar de uma linguagem, a diferença entre orientação processual e de objeto, que tipos de estruturas de dados e linguagens de objetos podem suportar e se referir, a diferença entre linguagens compiladas e interpretadas (e as compensações entre elas) .
Princípios básicos do design da estrutura de dados . A interação entre estruturas usadas para representar dados e os algoritmos que os utilizam. Os usos de matrizes, listas e dicionários.
A distinção entre objetos e referências a eles. ( Muitos erros são cometidos por pessoas que não reconhecem a diferença entre um nome de variável e sua sequência de caracteres citada !)
O que é um sistema operacional, quais serviços esperar dele e como interagir com ele.
O que é uma rede, quais serviços esperar deles, comparação de algumas arquiteturas e um senso de troca entre obter serviços de computação local ou remotamente.
Algoritmos teóricos dos grafos: muitas análises GIS podem ser abstratamente representadas em termos de problemas nos gráficos; poder fazer isso dá acesso a algoritmos eficientes. Um bom exemplo em nosso site está aqui envolvendo um problema que inicialmente parece não ter nada a ver com gráficos.
Recursão. Um bom exemplo para os profissionais de GIS é a criação de um índice espacial como esse algoritmo para um quadtree de ponto adaptativo .
Dados GIS
Como os dados vetoriais e rasterizados são armazenados, internamente e para troca de dados.
Como as topologias de multipontos, polilinhas, polígonos e NTIs podem ser representadas e processadas.
Princípios básicos de compactação de dados conforme aplicados a dados GIS , especialmente codificação de comprimento de execução.
Sistemas de banco de dados
O que é um sistema de gerenciamento de banco de dados relacional, como ele difere de outros projetos importantes de banco de dados, quais são suas vantagens e desvantagens.
Normalização e design de bancos de dados .
Como consultar bancos de dados (por exemplo, SQL).
Métodos de documentação, especialmente metadados e dicionários de dados .
SIG
Algoritmos típicos para executar procedimentos básicos de GIS, incluindo point-in-polygon e buffering. Por que algoritmos diferentes podem ser desejáveis para cálculos pontuais em comparação com cálculos repetidos com os mesmos dados ou para dados estáticos comparados com dados dinâmicos (em tempo real).
Como os dados GIS podem ser organizados para pesquisa e processamento, como quadríceps .
Avaliação de trocas entre resolução / precisão / velocidade no armazenamento de dados GIS (especialmente dados rasterizados).
Miscelânea
Técnicas de depuração: como isolar, identificar e solucionar erros. Como descrever e relatar erros e anomalias aparentes. Como fazer boas perguntas na Web!
Como inverter funções com algoritmos de busca de raiz . (A falha em avaliar isso freqüentemente leva a algoritmos extremamente ineficientes ou falha em resolver um problema completamente.)
Como escolher entre os programas de otimização de caixa preta (contínuo vs. inteiro, convexo vs. não, univariado vs. multivariado, linear vs. não, etc.). Para mais exemplos, consulte um problema de localização do equipamento e um problema de empacotamento de polígono .
Como navegar nos sistemas de ajuda. O que procurar e o que rejeitar como inútil. (A ajuda on-line do ArcGIS da ESRI fornece exemplos esplêndidos dos muito bons e dos muito ruins.) Isso pode até incluir algumas instruções na leitura de diagramas de objetos .
Porque isso está fora do topo da minha cabeça, certamente está incompleto. Se as pessoas acharem a lista útil, trabalharei para melhorá-la - ou me ajude e sinta-se à vontade para adicioná-la se você tiver reputação suficiente. Para manter isso prático e focado, trate apenas de conceitos que ajudarão as pessoas a evitar problemas que você realmente observou (em seu próprio trabalho ou no de outras pessoas).
fonte
Parallelize
comando e ele cuida do resto. (Entendendo a tecnologia subjacente ainda é útil para tirar o máximo desse recurso, no entanto.)Eu me formei em um programa centrado na ESRI, no qual o corpo docente fez um bom trabalho separando conceito (palestra) e utilidade (laboratório). Minhas principais fraquezas ao sair da academia foram: 1) eu não tinha habilidades em SQL, nenhum conhecimento dos princípios básicos do banco de dados; e 2) eu não estava preparado para o pré-processamento programático necessário para a maioria dos conjuntos de dados.
Eu recomendo um workshop de "manipulação de dados" para introduzir um RDBMS adequado (provavelmente PostreSQL com PostGIS) e uma linguagem de programação (provavelmente Python) para uso na limpeza de arquivos CSV, TXT ou SHP. Com apenas um gostinho de cada um, seus alunos estarão mais preparados para permanecer sozinhos "lá fora".
fonte
Mesmo que a universidade use ESRI, eu recomendaria a introdução ou descrição de equivalentes de código aberto. Por um lado, é muito mais fácil para os alunos instalar o QGIS em seus laptops do que o ArcGIS, se eles querem testar a abertura de um shapefile, pois o QGIS é significativamente menor (o ArcGIS 10 é de 2 a 3 GB) e os alunos não precisam de uma conexão à Internet. Minha universidade tem currículos focados no ArcGIS e não no GIS; Pessoalmente, acho que isso é inverso.
A introdução do KML com o Google Earth ou Google Maps pode ser uma maneira de envolver os alunos. O KML é popular, e criar um mapa interativo é um pouco mais emocionante do que um mapa em papel; especialmente quando você pode compartilhar um link da web com outras pessoas.
fonte
Eu definitivamente adicionaria scripts e projeções. Outra observação, é um resumo da ESRI? Eu tentaria torná-lo “independente de IG”, como há tantos agora, que a ESRI não possui um monopólio completo e, à medida que os orçamentos diminuem, sua participação no mercado também diminui. Então, eu tentaria introduzir mais projetos de código aberto também, muito mais empresas e organizações estão se movendo dessa maneira.
Eu também introduziria estruturas de programação, se possível. Eu sei que você disse que isso passou pela cabeça deles da última vez, mas os scripts, pelo menos, são necessários até mesmo para o praticante de GI mais básico.
Também são necessárias habilidades de banco de dados. Novamente, mesmo o profissional mais básico de IG, provavelmente terá que manter algum tipo de armazenamento de dados e manipular esses dados será um elemento-chave do seu dia-a-dia.
Uma das coisas mais comuns que tenho que fazer é ensinar aos usuários o que realmente é o GIS. Às vezes me surpreende o quão pouco as pessoas sabem sobre SIG, além do Google Maps. Portanto, conseguir que eles demonstrem um entendimento importante sobre o que é, holisticamente, dos usuários para os sistemas seria benéfico para todos os usuários. Recentemente, eu estava trabalhando com um desenvolvedor Java de alguma experiência e com alguém que eu classifiquei como especialista, mas ele realmente não entendeu o que era um GIS, na totalidade.
Também seria bom demonstrar a localização para eles, pois poucas pessoas pensam fora da caixa sobre o que é uma localização.
No entanto, tem o potencial de ser maior que Ben Hur. Estudei Ciência da Computação na Universidade, com um módulo de SIG. Apesar de depois concluir o mestrado em SIG, trabalhar 15 anos na indústria, ainda estou aprendendo, por isso é impossível obter tudo.
fonte