Suite

Ajout de points lors de la jonction de deux jeux de données dans ArcGIS Desktop


J'essaie de joindre un fichier Excel avec un fichier de formes basé sur un code postal. Mon problème est que j'ai plusieurs personnes avec le même code postal, mais cela ne rejoint qu'une de ces personnes.

Est-il possible d'ajouter automatiquement plusieurs points en essayant de joindre plusieurs personnes du fichier excel avec mon shapefile (qui n'a qu'un seul point de code postal) ?


Voici une solution de contournement simple (mais bien sûr, il serait plus propre de le faire avec un insertcursor en Python).

1) Ajoutez les coordonnées X et Y de vos points (à partir de la calculatrice de terrain, ou avec l'outil dans Gestion des données > entités)

2) joindre le tableau de votre point sur votre fichier excel

3) exportez le fichier Excel vers une autre table et ajoutez-le comme point à l'aide de "Couche d'événement XY"


Le guide de l'auto-stoppeur pour GTFS avec python

Depuis sa sortie en 2004, la General Transit Feed Specification (GTFS) a révolutionné notre façon de travailler avec les données de transport en commun. Il définit un format commun pour les horaires des transports publics et les informations géographiques associées. Un flux GTFS est composé d'une série de fichiers texte rassemblés dans un fichier ZIP. Chaque fichier modélise un aspect particulier des informations sur les transports en commun : arrêts, itinéraires, trajets et autres données d'horaire.

Les flux GTFS permettent aux agences de transport en commun de publier leurs données de transport et aux développeurs d'écrire des applications qui utilisent ces données de manière interopérable. Bon nombre de ces flux sont disponibles en libre accès sur le site Web Open Mobility Data.

Mais avouons-le, si vous avez déjà travaillé avec un jeu de données GTFS, vous savez qu'il y aura toujours être un champ manquant ou un arrêt sauté, ce qui rend difficile son utilisation réelle.

Pour cette raison même, de nombreux modules dans divers langages de programmation sont disponibles pour nous permettre de corriger les erreurs, de combler les lacunes et de générer des fichiers manquants pour cet ensemble de données GTFS défectueux de votre autorité de transport locale.

J'ai récemment accepté de faire exactement cela pour de nombreux flux de transit et j'ai pensé partager avec le monde ce que j'ai appris. Donc, que vous essayiez d'obtenir des itinéraires dans OpenTripPlanner, de créer votre propre GTFS ou simplement d'exécuter une analyse des transports en commun, voici quelques scripts en python pour vous permettre d'améliorer vos ensembles de données.

Dans cet article, nous couvrirons certains des problèmes les plus courants que vous trouverez dans les flux GTFS, tels que :

  1. Validation et recherche d'erreurs dans les flux GTFS
  2. Créer un fichier shape.txt à partir de zéro
  3. Interpolation des temps d'arrêt à blanc
  4. Fusion de deux flux GTFS ensemble
  5. Ajout de couleurs aux lignes dans le fichier routes.txt
  6. Construire et modifier le fichier calendar.txt
  7. Vérification visuelle des résultats sur une carte

2. Qu'est-ce que le SIG ?

Un système d'information géographique (SIG) est un outil informatique qui relie l'information géographique (où sont les choses) à des informations descriptives (ce que sont les choses). Avant le SIG, nous avions des cartes papier pour nous déplacer dans le monde.

Les données SIG ont deux caractéristiques clés :

Avec cette relation spatiale entre les données, nous pouvons effectuer une superposition ou une analyse spatiale.

Un SIG est : « Un système de capture, de stockage, de vérification, d'intégration, de manipulation, d'analyse et d'affichage de données spatialement référencées à la Terre (Chorley, 1987).

Un SIG stocke des informations sur le monde sous la forme d'un ensemble de couches thématiques pouvant être reliées entre elles par la géographie.

Modèles de données (Vector & Raster)



Au fil des ans, ESRI a développé trois principaux formats de données pour le stockage des informations géographiques : les couvertures, les fichiers de formes et les bases de données géographiques. Les fichiers de formes ont été développés pour fournir un format simple et non topologique pour le stockage des informations géographiques et attributaires. En raison de la simplicité des fichiers de formes, il s'agit d'un format de transfert de données ouvert très populaire. Un fichier de formes peut prendre jusqu'à trois à cinq fois plus d'espace qu'une géodatabase fichier ou SDE en raison des méthodes de compression de forme.


Comment fusionner plusieurs fichiers Excel ensemble

Vous pouvez utiliser le Déplacer ou copier une feuille outil dans Excel pour fusionner des données dans plusieurs fichiers Excel. Vous pouvez le faire en sélectionnant toutes les feuilles de calcul actives dans un fichier, puis en les fusionnant dans votre fichier cible unique, en répétant ce processus pour plusieurs fichiers.

  • Pour ce faire, ouvrez vos fichiers Excel. Dans la fenêtre ouverte d'un fichier Excel que vous souhaitez déplacer ou copier dans un autre fichier, sélectionnez tous les onglets de la feuille en bas de la fenêtre en maintenant la touche Changement et en cliquant sur chaque onglet de la feuille.

  • A l'air libre Déplacer ou copier boîte de dialogue, sélectionnez le fichier Excel cible vers lequel fusionner Faire de la boxe menu déroulant. Sélectionnez l'endroit où vous souhaitez placer vos feuilles fusionnées dans le Avant la feuille section. Si vous souhaitez laisser le fichier d'origine intact, appuyez sur Créer une copie pour copier les feuilles plutôt que de les déplacer, puis appuyez sur d'accord pour commencer le processus de déplacement ou de copie.

Si vous avez plusieurs fichiers Excel, vous devrez répéter ces étapes pour les fusionner en un seul fichier.


Géoréférencement

Le géoréférencement est le processus de définition de l'emplacement des données raster à l'aide de coordonnées cartographiques, ce qui permet de les visualiser, de les interroger et de les analyser avec vos autres données géographiques. Pour plus de pratique avec le géoréférencement, consultez notre cours abrégé : Mapping Imagery. Pour plus d'informations sur le géoréférencement dans ArcGIS Pro, consultez cette ressource d'aide : Géoréférencement

Lors du géoréférencement, ainsi que de l'édition ultérieure, nous ferons dans ce cours, cliquez et maintenez les molette de la souris pour vous déplacer sur l'écran lorsque vous êtes actuellement dans une session d'édition.

  1. Dans le volet Contenu, clic-droitTVH.jpg ensuite Cliquez surZoom sur le calque.
  2. Dans le volet Contenu, Cliquez surTVH.jpg de sorte qu'il est surligné en bleu clair. Du Ruban, Cliquez sur les Imagerie onglet puis Cliquez sur les Géoréférencement bouton.


  3. Cliquez surAjouter des points de contrôle.


  4. Click gauchele coin en haut à gauche de la TVH JPG. Cela sélectionne ce point sur le JPG à géoréférencer. Si vous devez effectuer un zoom avant et un panoramique pour voir les coins du JPG, vous pouvez déplacer la molette de la souris pour zoomer et cliquer et faire glisser la molette de la souris pour effectuer un panoramique.
  5. Clic-droit n'importe où sur la carte. Cela ouvre un Coordonnées cibles boîte contextuelle, dans laquelle vous pouvez saisir manuellement les valeurs X et Y.
  6. TaperX : -104,5, Y : 33 et Cliquez surd'accord. La valeur x est la coordonnée Ouest et elle est négative car nous sommes dans l'hémisphère occidental. La valeur y est la coordonnée Nord.


Géocoder les électeurs

Ensuite, vous téléchargerez un fichier CSV qui répertorie les noms et adresses de 950 électeurs potentiels. Ensuite, vous géocoderez leurs adresses afin de pouvoir rechercher leurs modes de vie et leur niveau de vie via Tapestry Segmentation. Le géocodage est une opération SIG pour convertir les adresses des rues en données spatiales afin qu'elles puissent être cartographiées.

Ce groupe contient un fichier CSV de noms et d'adresses pour les électeurs du sud du comté de Howard.

Selon votre navigateur, le fichier CSV peut apparaître sur votre barre de téléchargement, ou vous pouvez être invité à ouvrir ou enregistrer le fichier.

La fenêtre Ajouter une couche à partir d'un fichier s'ouvre. ArcGIS Online prend en charge les fichiers CSV contenant jusqu'à 1 000 enregistrements.

Vous pouvez également faire glisser un fichier CSV directement sur une carte Web depuis votre ordinateur.

Les 950 points affichés sur la carte représentent les domiciles d'électeurs individuels (et fictifs).

En plus du nom et de l'adresse de l'électeur, la nouvelle couche comprend le sexe, le statut de bénévole et les dons.

Par défaut, les points se voient attribuer des couleurs uniques sur la base de leur nom. D'autres options de dessin sont affichées dans le volet Modifier le style. Pour cette carte, les noms individuels ne sont pas importants, vous donnerez donc à tous les points le même symbole pour afficher uniquement l'emplacement de chaque électeur.

Les données affichées sur la carte peuvent désormais être mises en correspondance avec Tapestry.


5 réponses 5

"const" signifie "ne peut pas être modifié(*1)". Vous ne pouvez donc pas simplement "ajouter" une chaîne de caractères const à une autre (*2). Ce que vous pouvez faire est de les copier dans un tampon de caractères non const.

Votre tentative d'utilisation de std::string a échoué pour une raison similaire. Tu as dit:

Ce qui devrait être ok sauf que cela crée une chaîne supplémentaire, ce que vous vouliez probablement est

Si vous rencontrez des erreurs de compilation en faisant cela, veuillez les publier (assurez-vous de #include ).

Ou vous pouvez faire quelque chose comme :

Tous les travaux suivants : (voir la démo en direct http://ideone.com/Ytohgs)

*1 Ou plus précisément, "ne peut pas être modifié in-situ" - vous pouvez l'utiliser dans des expressions, etc., par exemple, par ex.

2 "caractère const a + const char* b" essaie en fait d'ajouter deux pointeurs pas deux chaînes, le résultat serait l'adresse de la chaîne a plus l'adresse de la chaîne b, dont la somme serait un emplacement de mémoire aléatoire


Geom_point() et geom_line() pour plusieurs jeux de données sur le même graphique dans ggplot2

J'essaie de tracer trois ensembles de données sur le même graphique. Un ensemble de données doit apparaître sur le graphique comme un ensemble de points non connectés, tandis que les deux autres doivent apparaître comme des points de données connectés. Je peux construire le graphique en utilisant le code suivant ci-dessous:

Comme indiqué dans le code, il existe deux ensembles de points qui sont tracés avec le type "o", ce qui signifie que les points sont connectés par une ligne, alors qu'un ensemble de points n'est pas connecté par une ligne. J'essayais de recréer cela dans ggplot2. Je fais ce qui suit dans ggplot2 :

En faisant ce qui précède, j'obtiens les trois ensembles de points de trois couleurs différentes, mais bien sûr, les points rouge et bleu ne sont pas connectés respectivement. Si je veux connecter les points, je peux ajouter geom_line() à la commande ci-dessus afin d'avoir les éléments suivants :

Bien sûr, cela se traduit par des lignes reliant tous les points, de sorte que tous les points rouges sont connectés les uns aux autres, tous les points bleus sont connectés les uns aux autres et tous les points verts sont connectés les uns aux autres. Cependant, alors que je veux que les points rouges et bleus soient connectés, je ne veux pas que les points verts soient connectés. Y a-t-il un moyen de faire cela?

Je pourrais faire ce qui suit (ou similaire):

Avec cette commande, les points rouges sont connectés, les bleus sont connectés et les verts sont déconnectés. Cependant, je ne veux pas faire cela car je veux pouvoir faire apparaître toutes les couleurs de point dans la légende (et aucune légende n'apparaît dans cette solution).


Garder les caches synchronisés

Les agrégations qui combinent les modes de stockage DirectQuery, Import et/ou Dual peuvent renvoyer des données différentes, sauf si le cache en mémoire est synchronisé avec les données source. Par exemple, l'exécution de la requête ne tentera pas de masquer les problèmes de données en filtrant les résultats DirectQuery pour qu'ils correspondent aux valeurs mises en cache. Il existe des techniques établies pour traiter ces problèmes à la source, si nécessaire. Les optimisations de performances ne doivent être utilisées que de manière à ne pas compromettre votre capacité à répondre aux exigences de l'entreprise. Il est de votre responsabilité de connaître vos flux de données et de concevoir en conséquence.


R comme SIG pour les économistes

Cette section montre comment utiliser geom_raster() et geom_stars() pour créer des cartes à partir de jeux de données raster de deux classes d'objets : objets Raster (^*) du package raster et objets stars du package stars. geom_raster n'accepte ni Raster (^*) ni étoiles en entrée. Au lieu de cela, geom_raster() accepte un data.frame avec des coordonnées pour créer des cartes. Il s'agit donc d'une procédure en deux étapes

  • convertir un jeu de données raster en un data.frame avec des coordonnées
  • utiliser geom_raster() pour faire une carte

geom_stars() du package stars accepte un objet stars et aucune transformation de données n'est nécessaire.

Nous utilisons les objets suivants qui contiennent les mêmes informations mais appartiennent à des classes d'objets différentes à titre d'illustration dans cette section.

Raster comme des étoiles

Raster en tant que RasterStack

8.2.1 Visualiser Raster (^*) avec geom_raster()

Afin de créer des cartes à partir des informations stockées dans les objets Raster (^*), vous devez d'abord les convertir en un data.frame normal en utilisant as.data.frame() comme suit :

L'option xy = TRUE ajoute les coordonnées du centroïde des cellules raster, et na.omit() supprime les cellules qui se trouvent à l'extérieur de la frontière du Kansas et ont des valeurs NA. Notez que chaque bande comprend une colonne dans le data.frame .

Une fois la conversion terminée, vous pouvez utiliser geom_raster() pour créer une carte. Contrairement à geom_sf() , vous devez fournir les noms des variables pour les coordonnées géographiques (ici x pour la longitude et y pour la latitude). En outre, vous devez également spécifier la variable à utiliser pour la différenciation des couleurs de remplissage.

Vous pouvez ajouter coord_equal() pour qu'un degré de latitude et de longitude aient la même longueur sur la carte. Bien sûr, un degré de longitude et un degré de latitude ne sont pas la même longueur pour les États-Unis. Cependant, la distorsion est plus petite par rapport à la valeur par défaut au moins.

Nous n'avons visualisé les données tmax que pour un jour ( layer.1 ) sur cinq jours d'enregistrements tmax. Pour les présenter tous en même temps, nous pouvons utiliser facet_wrap() . Cependant, avant de faire cela, nous devons avoir les données dans un format long comme celui-ci :

Utilisons maintenant facet_wrap() pour créer une série de cartes tmax.

8.2.2 Visualiser les étoiles avec geom_raster()

De même avec les objets Raster (^*), nous devons d'abord convertir une étoile en un data.frame normal en utilisant as.data.frame() comme suit :

Une différence clé par rapport à la conversion des objets Raster (^*) est que le data.frame est déjà au format long, ce qui signifie que vous pouvez immédiatement créer des figures à facettes comme celle-ci :

8.2.3 Visualiser les étoiles avec geom_stars()

Nous avons vu ci-dessus que geom_raster() nécessite de convertir d'abord un objet stars en data.frame avant de créer une carte. geom_stars() du package stars vous permet d'utiliser directement un objet stars pour créer facilement une carte sous le framework ggplot2. geom_stars() fonctionne exactement comme geom_sf() . Tout ce que vous avez à faire est de fournir un objet stars à geom_stars() en tant que données.

La couleur de remplissage des cellules raster est automatiquement définie sur l'attribut (ici tmax) comme si aes(fill = tmax) . C'est une bonne idée d'ajouter coord_equal() à cause du même problème que nous avons vu avec geom_raster() .

Par défaut, geom_stars() ne trace que la première bande. Afin de présenter tous les calques en même temps, vous pouvez ajouter facet_wrap(

x) où X est le nom de la troisième dimension de l'objet étoiles (date ici).

8.2.4 ajouter des couches geom_sf()

Vous pouvez facilement ajouter des couches geom_sf() à une carte créée avec geom_raster() ou geom_stars() . Recadrons les données tmax au Kansas et créons une carte des valeurs tmax affichées au-dessus des frontières du comté du Kansas.

8.2.4.1 ajouter geom_sf() à une carte avec geom_raster()

Notez que coord_equal() n'est pas nécessaire dans le code ci-dessus. En effet, si vous essayez d'ajouter coord_equal() , vous aurez une erreur.

De plus, les étoiles ou Raster d'origine (^*) doivent avoir le même SCR que les objets sf. Le code suivant transforme le CRS de KS_county en 32614 et essaie de les tracer ensemble.

Lors du traçage de plusieurs objets sf, le CRS de la carte a été défini sur le CRS des objets sf utilisés pour la première couche geom_sf(), et le reste des objets sf a emboîté le pas. Ce n'est pas le cas ici.

8.2.4.2 ajouter geom_sf() à une carte avec geom_stars()

C'est fondamentalement le même que le cas avec geom_stars()

Tout comme dans le cas de geom_raster() , coord_equal() n'est pas nécessaire et les étoiles et les objets sf doivent avoir le même CRS.