Suite

Ajouter des fonctionnalités de copie dans le script

Ajouter des fonctionnalités de copie dans le script


J'ai des problèmes avec CopyFeatures dans mon script. Les fichiers ont été copiés dans le dossier de sortie. Quelqu'un peut-il s'il vous plaît aider. Voici un extrait de mon script pour ArcGIS 10.3 ;

#Parcourez les fichiers shapfiles dans le dossier et reprojetez pour fc dans fcList : fcspatialRef = arcpy.Describe(fc).spatialReference.name if fcspatialRef != spatialRef==True : arcpy.Project_management(fc, outFolder + "" + fc, template ) else : fcspatialRef != spatialRef==False : arcpy.CopyFeatures_management(fc, outFolder) # Imprimer le fichier de formes Résultats du projet arcpy.AddMessage(fc) # Renvoie toutes les erreurs sauf : arcpy.AddMessage(arcpy.GetMessages())

Il y a 3 problèmes dans ton code :

  1. indentation sous le bloc for fc comme le dit @recurvata
  2. ligne inutile après l'autre
  3. sortie non valide pour l'outil CopyFeatures.

Voici le code corrigé :

# Parcourez les shapfiles dans le dossier et reprojetez pour fc dans fcList : fcspatialRef = arcpy.Describe(fc).spatialReference.name if fcspatialRef != spatialRef : arcpy.Project_management(fc, outFolder + "" + fc, template) else : arcpy.CopyFeatures_management(fc, outFolder + "" + fc) # Imprimer le fichier de formes Résultats du projet arcpy.AddMessage(fc)

On dirait que vous êtes en quelque sorte "sur-vérifié" pour faire correspondre les références spatiales, et vous êtes un peu faux. Essaye ça:

# Obtenez la référence spatiale spatialRef = arcpy.Describe(template).spatialReference.name # Faites une boucle dans les fichiers shapfile dans le dossier et reprojetez pour fc dans fcList : fcspatialRef = arcpy.Describe(fc).spatialReference.name # l'expression ci-dessous sera soit égale à True ou False, et c'est ce sur quoi # l'instruction if fonctionnera if fcspatialRef != spatialRef: arcpy.Project_management(fc, outFolder + "" + fc, template) # tous les cas où l'expression ci-dessus est False iront directement au # else bloc ci-dessous else : arcpy.CopyFeatures_management(fc, outFolder)

De plus, comme @recurvata l'a mentionné, l'indentation dans le code que vous avez publié jusqu'à présent est incorrecte, alors faites attention à cela. Pour ton code :

## 1ère indentation pour les blocs try/except ## tout le code jusqu'à… try : ## 2e indentation pour le code à l'intérieur des blocs try/except ## du code "try" if expression : ## 3e indentation à l'intérieur des blocs if/else ## du code "if" else : ## du code "else" ## retour à la 1ère indentation pour le bloc except except : ## du code "except"

J'espère que cela pourra aider!


L'outil est principalement utilisé avec l'outil Ajouter des emplacements pour transférer des champs des entités en entrée vers les sous-couches. Par exemple, si vous souhaitez transférer un champ appelé UniqueID de vos entités en entrée dans la sous-couche Installations de la couche Zone de desserte, utilisez cet outil pour ajouter d'abord le champ UniqueID à la sous-couche Installations, puis utilisez les mappages de champ dans Ajouter des emplacements. outil pour fournir des valeurs d'entrée pour le champ UniqueID.

Des champs peuvent être ajoutés à n'importe quelle sous-couche des couches d'analyse de réseau.


Lundi 14 novembre 2011

Mise à jour : Arcmap Toolbox avec Python Script

Une première étape de la publication d'un outil de géotraitement ArcServer consiste à ajouter le script à une boîte à outils ArcMap, à définir les paramètres du script, puis à publier l'outil.
L'outil que je développe permet aux utilisateurs non techniques d'effectuer des requêtes techniques en appuyant sur un bouton.
Actuellement, j'ai ajouté l'outil à une boîte à outils dans ArcMap. L'outil prend 12 arguments de l'utilisateur. 9 arguments sont des cases à cocher, 2 arguments sont des valeurs entre 0 et 1, et l'argument final est un ensemble de caractéristiques (un polygone). Les cases à cocher permettent à l'utilisateur de sélectionner des attributs dans l'ensemble de données, d'une manière « on/off ». Pour sélectionner une plage de densité de genévrier, les deux arguments qui prennent des nombres décimaux spécifient les valeurs basse et haute de densité. Et le dernier argument, l'ensemble de fonctionnalités, permet à l'utilisateur de dessiner d'abord un polygone autour d'une zone spécifique à partir de cette zone spécifique, tous les autres arguments sont ensuite utilisés pour affiner la requête.

Par exemple, la capture d'écran ci-dessous crée une requête qui sélectionnera : Prairies et savanes à faible et à forte production, qui se trouvent sur des terres privées, avec une densité de genévriers inférieure à 25 %, le tout dans le polygone spécifié.

La sélection d'ensembles de caractéristiques résultante pour cette requête est ci-dessous.

Un autre exemple, voici le résultat de la requête (High and Low Producting Grassland, c'est-à-dire State Trust, avec 0 à 25% de densité de genévrier - dans le polygone spécifié).

La partie la plus unique et la plus facilement reproductible de cet outil consiste à trouver une « plage » de données. Cet outil pourrait facilement être appliqué à l'ensemble de l'État pour répondre aux questions sur la pente, la distance par rapport aux bassins versants et éventuellement d'autres questions sur la densité, comme la densité de la population animale.


Karthik Ram du projet rOpenSci a créé un wrapper autour de l'Ecoengine qui permet un accès direct à nos ressources au sein d'une session R. Trouvez un tutoriel et une documentation détaillée ici ou lisez cet article de blog.

L'API n'est pas seulement un outil puissant pour les développeurs qui créent des applications Web, elle fournit également un accès aux données dans un large éventail de contextes, essentiellement au sein de toute application pouvant communiquer via le protocole https. Les tutoriels suivants aideront les non-développeurs à utiliser les vastes données stockées dans notre API.

Préparation des URL¶

  1. Utilisez cette documentation et l'API consultable pour déterminer l'URL qui représente la ressource à ajouter, par ex. /api/observations/?genus=puma. Cette URL n'est pas tout à fait prête, quelques autres choses doivent être faites car cela ne renverra que les 10 premiers enregistrements dans un format de nombreuses applications, par ex. QGIS, ne peut pas encore digérer.
  2. Ajoutez le paramètre page_size pour obtenir plus de résultats. Si vous ouvrez l'URL ci-dessous, vous obtiendrez un nombre d'enregistrements renvoyés, pour l'exemple puma son

260 (qui change à mesure que de nouveaux ensembles de données sont disponibles). Pour un plus petit nombre d'enregistrements (jusqu'à

Toutes les applications ne peuvent pas gérer les géométries vides dans GeoJSON, la définition de georeferenced=True peut être nécessaire pour charger les données.

Microsoft Excel, LibreOffice Calc et similaires¶

Si vous demandez ?format=csv, l'API renverra un fichier CSV qui sera – en fonction de votre système – déclenchera probablement l'ouverture d'une fenêtre de téléchargement. Un tel fichier CSV délimité par des virgules peut être ouvert dans la plupart des tableurs. Dans de nombreux cas, ce sera aussi simple que de choisir le ‘Open with . ’ dans le menu de téléchargement.

Un cas particulier – préparation des données pour MaxEnt¶

QGIS est une alternative très puissante à ArcGIS et fournit un cadre de bureau SIG puissant. Les flux de données GeoJSON (depuis l'Ecoengine) peuvent être facilement ajoutés sous forme de couches. Voici un court exemple sur la façon d'ajouter toutes les occurrences de puma à votre carte à l'aide de QGIS 2.0.1.

?georeferenced=True est requis

  1. Ouvrez la boîte de dialogue “Ajouter un calque vectoriel”
  1. Sélectionnez ‘Protocol’ de type ‘GeoJSON’, copiez l'URL et cliquez sur Ouvrir :
  1. Le résultat sera similaire à ceci :

Cela ne se traduira pas par un connecteur en direct mais par une copie locale des données qui peuvent être enregistrées dans différents formats. Pour les mises à jour, répétez le processus.

Les informations de projection fournies par le paramètre srs= seront transférées à QGIS. Si aucune information n'est fournie, l'API renverra les coordonnées en latitude et longitude WGS84 (EPSG:4326). Utilisez par ex. ?srs=3310 à modifier.

ArcGIS¶

Le défi pour les utilisateurs d'ArcGIS est qu'aucun filtre d'importation GeoJSON n'est implémenté si l'extension d'interopérabilité des données n'est pas installée et payée. Cependant, il existe plusieurs façons d'importer les données ci-dessous.

Rapide et sale

Le correctif le plus rapide consiste à télécharger les données au format CSV, par ex. /api/observations/?genus=puma&page_size=262&format=csv. Le fichier CSV résultant contiendra les coordonnées x et y dans deux champs geojson.coordinates.0 et geojson.coordinates.1 , qui doivent être attribués lors de l'importation du fichier CSV dans ArcMap.

De plus, définissez manuellement le système de référence géographique avec l'outil ‘Define Projection’ (qui est DIFFÉRENT de l'outil Projet). Définir sur WGS84 si non demandé autrement.

Fonctionne uniquement pour les données ponctuelles (par exemple, les occurrences et les photos) mais pas pour les entités.

Plus élégant, toujours sans extension d'interopérabilité des données

Une deuxième stratégie – particulièrement adaptée aux projets qui fonctionnent avec des scripts – consiste à utiliser les bibliothèques Python JSON et urllib2 pour mapper les champs API dans une classe d'entités ArcMap. L'exemple de code suivant peut être utilisé comme point de départ pour développer.

Le code suivant peut être exécuté dans une console ArcMap Python (chemin de sortie d'échange). Cela ajoutera la couche à la carte.

L'exemple ne couvre que les données ponctuelles et non la génération d'attributs. Cependant, l'exemple peut être facilement développé.

Utilisation de l'extension d'interopérabilité des données

CartoDB¶

CartoDB est un service Web qui permet la génération rapide de cartes à partir de données téléchargées. De plus, il fournira une API RESTful qui encapsule les requêtes SQL spatiales sur les données. Les utilisateurs sont autorisés jusqu'à cinq tables publiques, 5 Mo de stockage et 10 000 vues cartographiques mensuelles dans un compte gratuit pour évaluer l'utilité de CartoDB. Pour des fonctionnalités supplémentaires, vous devez vous abonner à l'un de leurs plans de paiement.

Étapes pour obtenir des données Ecoengine dans une table CartoDB

  1. Créez un compte et connectez-vous.
  2. Accédez à “Votre tableau de bord”. Le lien sera en haut de la page.
  3. S'il s'agit de votre première table, il y aura un guide pour créer une table. Sinon, vous trouverez un lien “Nouvelle table”.
  4. Dans les deux cas, vous arriverez à une fenêtre comme ci-dessous. Ajoutez votre URL dans le champ du formulaire. Dans l'exemple c'est https://ecoengine.berkeley.edu/api/observations/?genus=lynx&format=geojson&page_size=700

La partie https:// de l'URL ainsi que le paramètre de requête format=geojson sont requis pour une importation réussie.


Explorateur Thunderhead

Data Scientists, si vous traitez et analysez des données spatiales et utilisez Python, alors ArcPy doit être inclus dans votre arsenal d'outils et ArcMap doit être utilisé pour la visualisation des données géospatiales. Après le dernier article où j'ai étendu Apache Hive avec des fonctions spatiales définies par l'utilisateur (UDF), dans cet article, je vais démontrer l'utilisation de la ruche "étendue" dans Python et comment enregistrer la sortie dans une classe d'entités pour le rendu dans ArcMap ou tout autre Client ArcWeb utilisant ArcGIS Server.

Étant donné une instance Hadoop en cours d'exécution et en supposant que vous avez installé Hive et créé une table Hive comme décrit dans le dernier message, démarrez le serveur Hive Thrift comme suit :

Lorsqu'ArcGIS for Desktop est installé sur un hôte, Python est éventuellement installé et est activé avec les fonctionnalités de géotraitement. Installez Hive sur votre bureau et définissez la variable d'environnement HIVE_HOME sur l'emplacement où réside Hive. Pour accéder aux bibliothèques python de Hive, exportez la variable d'environnement PYTHONPATH avec sa valeur définie sur $HIVE_HOME/lib/py.

Avec la configuration derrière nous, abordons un cas d'utilisation simple Étant donné une classe d'entités surfaciques sur le bureau et un ensemble de points stockés dans le système de fichiers Hadoop et exposés via une table Hive, je souhaite effectuer une opération de point dans un polygone sur Hadoop et mettre à jour les attributs de polygone de classe d'entités locales avec les résultats renvoyés.

Voici le script Python :

importer arcpy
importer le système

à partir d'arcpy importer env

depuis hive_service importer ThriftHive
de hive_service.ttypes importer HiveServerException
de l'épargne importation
de thrift.transport importer TSocket
de thrift.transport import TTransport
de thrift.protocol importer TBinaryProtocol

env.overwriteOutput = True

essayer:
transport = TSocket.TSocket('localhost', 10000)
transport = TTransport.TBufferedTransport(transport)
protocole = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocole)
transport.open()

client.execute("ajouter le fichier country.shp")
client.execute("ajouter le fichier country.shx")
client.execute("ajouter le pot GeomX.jar")
client.execute("créer un pip de fonction temporaire en tant que 'com.esri.GenericUDFPip'")

client.execute("""
sélectionnez t.p comme fid, count(t.p) comme val
de (sélectionnez pip(x,y,'./countries.shp') comme p des villes) t
où p!=-1 regrouper par t.p
""")
lignes = client.fetchAll()
transport.close()

keyval = dict()

pour rangée dans rangées :
jetons = ligne.split()
clé = int(jetons[0])
val = int(jetons[1])
keyval[clé] = val
de la ligne
des lignes

lignes = arcpy.UpdateCursor("pays.shp")
pour rangée dans rangées :
clé = ligne.FID
si clé dans keyval :
ligne.HADOOP = keyval[clé]
lignes.updateRow(ligne)
de la ligne
des lignes

sauf Thrift.TException, tx :
imprimer '%s' % (tx.message)

Le script importe le client Thrift Hive et la bibliothèque ArcPy. Il se connecte ensuite au serveur Thrift Hive sur l'hôte local et exécute un ensemble d'opérations de configuration. Les deux premiers ajoutent la géométrie du fichier de formes des pays et les fichiers d'index spatial dans le cache distribué. La configuration suivante ajoute le fichier jar contenant les fonctions spatiales UDF. La dernière configuration définit la fonction pip avec une référence à la classe dans le pot chargé. L'instruction select est exécutée pour récupérer l'identifiant de pays et le nombre de villes dans ce pays sur la base d'une sélection de nid qui utilise la fonction pip pour identifier quel point de ville appartient à quel polygone de pays. Un fid avec une valeur de -1 est renvoyé si un résultat pip n'est pas trouvé et est exclu du décompte final du groupe. La fonction fetchAll renvoie une liste d'éléments de texte, où chaque élément de texte est une valeur fid suivie d'une tabulation puis d'une valeur de comptage. Un dictionnaire est rempli en tokenisant la liste où la clé du dictionnaire est le fid et la valeur est le nombre. Un curseur de mise à jour arcpy est ouvert sur la classe d'entités des pays locaux et un itérateur de ligne est exécuté. pour chaque ligne, la valeur FID est récupérée et vérifiée si elle existe en tant que clé de dictionnaire. S'il est trouvé, le champ d'attribut HADOOP est mis à jour avec la valeur du dictionnaire.

Après une exécution réussie (et rappelez-vous que cela peut prendre un certain temps car Hive est un processus par lots), ouvrez ArcMap, chargez cette classe d'entités et symbolisez-la avec un qualificateur de rupture de classe basé sur les valeurs de champ HADOOP.

Plutôt cool, non ? Il s'agit d'un exemple très très simple du mariage d'un outil BigData et d'un outil SIG utilisant Python. Il y a tellement plus qui peut être fait en utilisant cette combinaison d'outils dans le même processus de réflexion. Attendez-vous à plus de messages dans le même sens avec une utilisation plus arcpy. Je voulais juste planter une petite graine dans votre esprit.

Mettre à jour: Il s'agit d'un autre exemple qui calcule les valeurs moyennes de latitude/longitude des villes par pays dans Hive et l'ensemble de résultats utilisé pour créer une classe d'entités ponctuelles :


Format nokia


SelectLayerByAttribute mah NEW_SELECTION " OBJECTID = 81 "
SelectLayerByLocation et HAVE_THEIR_CENTER_IN mah 0 NEW_SELECTION
CalculerField_management yo demo_1 x PYTHON 'x = 81'
SelectLayerByAttribute mah CLEAR_SELECTION
SelectLayerByAttribute et CLEAR_SELECTION

Sélectionner par emplacement : exemples graphiques

Flip (Çizgi Yönünü değiştirir)

ObjectID kolonu problemi

Aide Web d'ArcGIS Server 9.3

Ligne de séparation aux sommets (gestion des données) (ArcInfo uniquement)

Jointure spatiale (analyse)

Présentation de l'écriture de scripts de géotraitement

Fonctionnement de l'importation à partir de la CAO (conversion)

Guide rapide du géotraitement

La fréquence <in_table> <out_table> <fréquence_fieldsfréquence_champs. >

TableVersDBASE <input_tablesinput_tables. > &ldossier_de_sortie>

Non généré : crée un fichier texte de coordonnées xy à partir d'une couverture.

Non généré <in_cover> <out_generate_file> <LINE POINT POLY TIC LINK REGION.subclass ANNO.subclass>

duble yolları tek yol yapmak için :
Réduire les lignes doubles à la ligne centrale: dérive les lignes médianes (lignes simples) à partir d'entités à deux lignes, telles que les enveloppes de route, en fonction des tolérances de largeur spécifiées.

RéduireDualLineToCenterline <in_cover> <out_cover> <largeur_maximale>

mahalle sınırlarından ilçe sınırı üretmek için kullanılır :
Dissoudre: fusionne les polygones, lignes ou régions adjacents qui ont la même valeur pour un élément spécifié.

Dissoudre <in_cover> <out_cover> <dissolve_item>

Éliminer : fusionne les polygones sélectionnés avec les polygones voisins qui ont la plus grande frontière partagée entre eux ou la plus grande surface.

Simplifier la ligne ou le polygone : supprime les petites fluctuations ou les courbures superflues d'une ligne ou d'un polygone, tout en préservant sa forme essentielle.

SimplifierLigneOuPolygone <in_cover> <out_cover> <simplification_tolerance>

Joindre des tables d'informations: joint les définitions d'élément et les valeurs de deux tables en fonction d'un élément partagé.

JoinItem <in_info_table> <join_info_table> <out_info_table> <relate_item>

dönüşüm:
Transformer: déplace toutes les entités de la couverture en fonction d'un ensemble de points de contrôle de et vers.

Transformer <in_cover> <out_cover>

x ve y koordinatlarını yazar:
Ajouter des coordonnées XY: calcule et ajoute les coordonnées xy des étiquettes ou des points au PAT de couverture ou les coordonnées xy des nœuds au NAT de couverture.

Renuméroter les nœuds: met à jour la topologie des nœuds d'arc en renumérotant les nœuds pour les arcs de couverture et identifie les arcs qui partagent les mêmes emplacements de nœuds.

Créer une couverture: crée une nouvelle couverture vide.

Créer un résille: crée un quadrillage de cellules rectangulaires.

CréerRésille <out_feature_class> <origin_coord> <y_axis_coord> <cell_width> <cell_height> <number_rows> <number_columns>

Ajouter des coordonnées XY: ajoute les champs POINT_X et POINT_Y aux entités ponctuelles en entrée et calcule leurs valeurs.

geometri yi kontrol eder :

Vérifier la géométrie : Vérifie la validité des géométries des entités.

Vérifier la géométrie <in_featuresin_features. > <out_table>

• La table de sortie aura un enregistrement pour chaque problème détecté. Si aucun problème n'est détecté, la table de sortie n'aura aucun enregistrement.

• La table de sortie comporte les champs suivants :

• CLASS—Le chemin d'accès complet et le nom de la classe d'entités dans laquelle le problème a été détecté.

• FEATURE_ID—L'ID d'entité (FID) ou l'ID d'objet (OID) pour l'entité avec le problème de géométrie.

• PROBLEM—Une brève description du problème.

• Le champ PROBLÈME contiendra l'un des éléments suivants : segment court, géométrie nulle, anneau incorrect
ordre, orientation de segment incorrecte, intersections automatiques, anneaux non fermés ou pièces vides.

• Pour les entités multipoints, seuls les problèmes de géométrie nulle et de pièce vide s'appliquent.

• Pour les entités ponctuelles, seul le problème de géométrie nulle s'applique.

Fonctionnalités de copie: copie les entités sélectionnées dans une nouvelle classe d'entités.

Supprimer des fonctionnalités: supprime les entités de la classe d'entités ou de la couche en entrée

Supprimer les fonctionnalités <in_features>

bina poligonuna nokta ekler, centre de gravité :

Fonctionnalité à pointer : Crée une classe d'entités ponctuelles basée sur un polygone, une ligne ou une classe d'entités multipoints en entrée.

EntitéVersPoint <in_features> <out_feature_class>

• Si les entités en entrée sont des polygones, l'option Centroïde générera des points situés au centre de gravité de ce polygone. Cela peut ne PAS être à l'intérieur de la zone du polygone. Pour vous assurer que le point créé se trouve à l'intérieur de la zone du polygone, utilisez l'option Intérieur.

• Si les entités en entrée sont des lignes et que l'option Centroïde est utilisée, les points en sortie coïncideront avec le centre de l'enveloppe de l'entité (fenêtre rectangulaire contenant une entité spécifique). Si l'option Intérieur est utilisée, le point sur la ligne le plus proche du centre de l'enveloppe de l'entité sera utilisé.

• Si les entités en entrée sont multipoints et que l'option Centroïde est utilisée, les points en sortie coïncideront avec le centre de l'enveloppe de l'entité (fenêtre rectangulaire contenant une entité spécifique). Si l'option Intérieur est utilisée, le point (partie du multipoint) le plus proche du centre de l'enveloppe de l'entité sera utilisé.

sommet lere nokta atar:

Des sommets d'entités aux points : Crée une classe d'entités ponctuelles à partir des emplacements des sommets des entités en entrée.

EntitéSommetsVersPoints <in_features> <out_feature_class>

Multipart à Singlepart : Divise toutes les fonctionnalités multiparties en fonctionnalités uniques.

MultipartVersSinglepart <in_features> <out_feature_class>

yolları kırmak için :
Ligne de fractionnement aux sommets : Divise chaque entité linéaire à chaque sommet contenu dans une classe d'entités.

SplitLine <in_features> <out_feature_class>

Sélectionnez la couche par attribut : Crée, met à jour ou supprime la sélection sur une couche ou une vue tabulaire à l'aide d'une requête attributaire.

• L'entrée doit être une couche d'entités ou une vue tabulaire. Il ne peut pas s'agir d'une classe d'entités ou d'une table.

• Cet outil ne se limite pas à travailler dans ArcMap, il fonctionne sur les couches et les vues tabulaires dans ArcCatalog et dans les scripts. L'outil Créer une couche d'entités crée une couche pour une classe d'entités et l'outil Créer une vue tabulaire fait l'équivalent pour une table.

• Si une étendue ou une requête de définition est présente sur la couche en entrée ou la vue tabulaire, seules les entités ou les lignes qui correspondent à l'étendue et/ou à la requête de définition pourront être sélectionnées.

Sélectionnez le calque par emplacement : crée, met à jour ou v supprime une sélection sur la couche en entrée en fonction des relations spatiales pour sélectionner les entités.

• L'entrée doit être une couche d'entités ou une vue tabulaire. Il ne peut pas s'agir d'une classe d'entités ou d'une table.

• Cet outil ne se limite pas à travailler dans ArcMap, il fonctionne sur les couches et les vues tabulaires dans ArcCatalog et dans les scripts. L'outil Créer une couche d'entités crée une couche pour une classe d'entités et l'outil Créer une vue tabulaire fait l'équivalent pour une table.

• Si une étendue ou une requête de définition est présente sur la couche en entrée ou la vue tabulaire, seules les entités ou les lignes qui correspondent à l'étendue et/ou à la requête de définition pourront être sélectionnées.

Çevreleyenden bilgi al

selectLayerByAttribute: mah_ıd si 100 olan mahalle seçilir,

SelectLayerByLocation : seçili mahalle içindeki yollar seçilir (avoir leur centre dedans)

CalculateField: yol un mahalle ID si 100 yazdırılır.

alan hesaplaması :
Calculer les superficies: calcule les valeurs de surface pour chaque entité dans une classe d'entités surfaciques.

CalculerZones &ltinput_feature_class&gt &ltoutput_feature_class&gt

• Cet outil est utile pour déterminer un poids pour l'interaction intrazonale.

• Le champ F_AREA est créé dans la classe d'entités en sortie pour stocker les valeurs de surface calculées. Si un champ de ce
name existe déjà dans la classe d'entités en entrée, il sera écrasé dans la classe d'entités en sortie.

projeksiyon oluşturma :
Créer une référence spatiale: crée un objet de référence spatiale à utiliser dans ModelBuilder et les scripts.

• La définition de la référence spatiale définit le système de coordonnées, les domaines spatiaux et la précision. Les domaines spatiaux et la précision de la référence spatiale de sortie peuvent être modifiés davantage à l'aide de XY Domain, Z Domain, M Domain, Template XYDomains et Grow XYDomain By Percentage.

• Le modèle XYDomains n'a pas besoin d'être dans le même système de coordonnées que celui spécifié dans la référence spatiale ou le modèle de référence spatiale. S'ils sont différents, les étendues seront projetées pour correspondre.

Projet : v Remplace le système de coordonnées de votre jeu de données ou classe d'entités en entrée par un nouveau jeu de données ou classe d'entités en sortie avec le système de coordonnées nouvellement défini, y compris le datum et le sphéroïde.

Projet <in_dataset> <out_dataset> <out_coordinate_system> <>
transform_method. >

• Toutes les classes d'entités et/ou couches d'entités en entrée sont des entrées valides pour cet outil.

• Si vous avez une classe d'entités qui n'a pas de projection et de fichier PRJ définis, utilisez d'abord l'outil DefineProject.

Raster de projet : transforme un jeu de données raster d'une projection à une autre.
ProjetRaster <in_raster> <out_raster> <out_système_de_coordonnées>

rasterdan bir bölümü kesip almak için :
Agrafe: crée un sous-ensemble spatial rectangulaire d'un jeu de données raster.

Agrafe <in_raster> <rectangle> <out_raster>

• L'outil Découper vous permet d'extraire une partie d'un jeu de données raster en fonction d'une étendue rectangulaire.

• Les étendues x et y minimales et maximales vous permettent de définir les étendues de découpage pour votre jeu de données raster en sortie.

• Les valeurs d'étendue doivent être dans les mêmes coordonnées spatiales et unités que le jeu de données raster.

Copier le raster : convertit un raster en un jeu de données raster BMP, GIF, GRID, IMG, JPEG, JPEG2000, PNG, TIFF ou de géodatabase, et peut être utilisé pour charger des jeux de données raster dans un catalogue d'images.

Copier les lignes : écrit les lignes d'une table d'entrée, d'une vue tabulaire, d'une classe d'entités ou d'une couche d'entités dans une nouvelle table.
Copier les lignes <in_rows> <out_table>

verilerin en çok toplandığı orta noktayı belirler :
Caractéristique centrale: identifie l'entité située le plus au centre d'une entité ponctuelle, linéaire ou surfacique.

Fonctionnalité centrale <input_feature_class> <output_feature_class> <DISTANCE EUCLIDEENNE DISTANCE DE MANHATTAN>

Moyenne directionnelle linéaire: identifie la direction générale (moyenne) d'un ensemble de lignes.
Moyenne directionnelle <input_feature_class> <output_feature_class> <orientation_only>

• Une couche d'installation la plus proche peut être créée sur un réseau actuellement ajouté à la table des matières d'ArcMap ou vous pouvez accéder à un jeu de données réseau sur disque.

• Les options de hiérarchie ne peuvent être définies que si le réseau d'analyse en entrée possède un attribut de hiérarchie.
Réseau
Analyste
boîte à outils

Créer une couche de matrice de coût OD: crée une couche de matrice de coûts d'origine et de destination et définit ses propriétés de navigation.

• Une couche de matrice de coût OD peut être créée sur un réseau actuellement ajouté à la table des matières d'ArcMap ou sur un jeu de données réseau sur disque.

• Les options de hiérarchie ne peuvent être définies que si le réseau d'analyse en entrée possède un attribut de hiérarchie.

• La couche Route peut être créée sur un réseau actuellement ajouté à la table des matières d'ArcMap ou sur un jeu de données réseau sur disque.

• Les options de hiérarchie ne peuvent être définies que si le réseau d'analyse en entrée possède un attribut de hiérarchie.


Traqueur de bus en direct d'Albuquerque

semoga cepat menular ke kota-kota di Indonésie …

La ville d'Albuquerque a publié beaucoup de bonnes données et elle l'a fait dans plusieurs formats différents. Il y a un ensemble de données que j'aime et que je méprise à la fois : les données du bus en temps réel. Je l'aime parce que je pense que c'est un excellent exemple de données ouvertes. Il est extrêmement utile car il est mis à jour toutes les minutes. Je le méprise car il est en KML. Je vais donner à la Ville le bénéfice du doute et supposer qu'ils l'ont fait parce que leur logiciel de suivi des bus utilise KML par défaut, donc c'était un choix facile - il suffit de cracher ce que nous avons déjà.

En tant que développeur, KML ne vaut rien pour moi. Je veux un flux de données en JSON ou CSV. J'ai du mal à savoir quoi faire depuis un certain temps maintenant – ignorer les données du bus ou…

Bagikan ini :

Menyukai ini :


Comment créer un portefeuille hors ligne et ajouter de l'argent pour participer aux tournois de Django

mon projet est basé sur User Join aux tournois payants. après l'inscription de l'utilisateur, il souhaite rejoindre le tournoi. J'ajoute donc une fonction de paiement hors ligne. Mais cela ne fonctionne pas correctement. CE QUE J'AI BESOIN : si j'ajoute de l'argent à l'aide de la fonction d'ajout de solde, lorsque l'utilisateur ajoute un solde, il est stocké directement, par exemple : j'ai 20 roupies dans mon portefeuille, je dois donc ajouter de l'argent pour participer au tournoi. Je rajoute donc 100 roupies dans mon portefeuille, enfin en 120 roupies mon portefeuille à droite. Mais mon portefeuille n'affiche que 100 roupies. Je veux dire ajouter une entrée de solde directement stockée pour équilibrer sans ajouter d'instance. J'ai besoin d'argent d'instance + ajouter un solde dans mon portefeuille.


Appel api abstrait et essayez catch block dans une méthode commune en JavaScript pour le rendre plus réutilisable

Disons qu'il existe un fichier api.js qui inclut les méthodes ci-dessus, "getUrl" et "handleExceptions" ont déjà été extraits et je peux les utiliser directement. Mais il semble que pour chaque appel d'API, nous devons dupliquer le bloc try catch incluant "await axiosInstance.get" "return resp.data" et etc.

Pensez-vous que nous devons abstraire try catch block pour les méthodes ci-dessus ou que la méthode actuelle est assez bonne. Merci.


Besoin d'aide pour injecter le script dans l'en-tête de page avant que DOM ne soit exécuté dans l'extension chrome

J'essayais d'injecter un script dans une page Web avec l'extension chrome avant que la page ne commence à charger le dom à l'aide de "content script" et "run_at": document_start. Mais il semble que la page dom se charge avant que mon script ne soit injecté. Je le fais dans la version manifeste 2.

Dans manifest.json, j'ai déclaré comme ceci

Le Injectscriptmodifier.js se compose du code ci-dessous

Et le links.js a mutationobserver et addeventlistner modification pour capturer les liens cliquables et les boutons que la page a

Lorsque la page est chargée, certains des liens/boutons cliquables ne sont pas capturés et lorsque je vérifie le premier objet détecté, il apparaît quelque part au milieu de la page. Je soupçonne que "run_at": "document_start" n'arrête pas l'exécution du dom au début. Parfois, lorsque j'actualise, le script est injecté correctement et l'extension fonctionne comme prévu.

Au départ, j'essayais avec le script d'exécution de chrome qui s'exécute à document_idle à l'intérieur du script d'arrière-plan avec comme indiqué ci-dessous. Mais nous ne sommes pas en mesure de détecter les objets cliquables lorsque le dom est analysé et nous sommes passés au type d'inclusion de script de contenu.

Notre extension a besoin que certains des scripts soient chargés sur la page pour effectuer des opérations sur les nœuds, telles que la conversion de l'objet nœud réel en données json et l'ajout d'une interface utilisateur à la page elle-même, comme indiqué ci-dessous, avec le panneau de droite ouvert. Pour ce faire, nous injectons un SDK dans la page où il ajoute le code HTML à la page réelle et modifie l'apparence de la page. Veuillez voir comment notre panneau s'affiche sur le côté droit comme partagé dans la capture d'écran ci-dessous.

Si nous passons à un contexte mondial isolé, alors il y a deux problèmes

  1. Passer le domnode d'un script à un autre à l'aide de postmessage
  2. L'injection de scripts et de css sur la page ne se produit pas.

Quelqu'un pourrait-il me faire savoir si nous devrions utiliser un script de contenu isolé uniquement afin de supprimer le retard de chargement du script ou existe-t-il une alternative pour cela ?