Suite

Que signifient les valeurs de la colonne clazz (osm2po) ?

Que signifient les valeurs de la colonne clazz (osm2po) ?


J'ai une table donnée dans postgreSQL avec des données OSM qui est utilisée à des fins de routage en Java avec PGRouting. Il existe deux colonnes que je ne comprends pas. Ils appartiennent à osm2po. Ils sont étiquetés avec « flags » et « clazz ». Je sais que les drapeaux décrivent le genre de route. Cela signifie, que ce soit en voiture, à vélo,… Le problème maintenant, c'est que je ne comprends pas la signification des valeurs de la colonne clazz. Je sais juste qu'ils décrivent aussi le type de route. Quelqu'un peut-il expliquer ce que signifient les valeurs comme 12, 15, 31,… ? Existe-t-il une documentation où la signification des valeurs est écrite ?


Le fichier osm2po.config, qui peut être obtenu à partir de l'onglet téléchargements de la page osm2po, contient un tableau à quatre colonnes, défini comme :

1) commande simultanée

2) classe (1-127)

3) vitesse par défaut en kmh

4) type de transport autorisé (facultatif) - depuis la v4.5.30

Et voici quelques exemples de lignes qui, je pense, expliquent d'où viennent les 12, 51, etc., que vous voyez (dans la deuxième colonne).

wtr.tag.highway.motorway = 1, 11, 120, voiture wtr.tag.highway.motorway_link = 1, 12, 30, voiture wtr.tag.highway.service = 1, 51, 5, voiture|vélo wtr.tag .highway.living_street = 1, 63, 7, voiture|vélo|pied

Cela dit que la classe peut être comprise entre 1 et 127, et qu'il n'y a que 23 valeurs différentes dans cette table de configuration, donc j'espère que cela couvre toutes celles que vous voyez ?

Suite au commentaire d'OP, voici les docs officiels de l'autoroute osm


En ce qui concerne les drapeaux, je viens d'écrire une petite explication ici. J'aurais aimé avoir compris les drapeaux il y a quelque temps! Très utile, et un encodage intelligent.


À partir du fichier osm2po.config :

type de route clazz autoroute 11 autoroute_lien 12 trunk 13 trunk_link 14 primaire 15 primary_link 16 secondaire 21 secondaire_link 22 tertiaire 31 tertiary_link 32 résidentiel 41 route 42 non classé 43

La technique suivante que je suis sur le point de vous montrer nécessitera des tripes d'acier.

Compte tenu des critères suivants

  • datadir est /var/lib/mysql
  • la table est mydb.mytb
  • la colonne enum appelée est appelée enum_col
  • le moteur est MyISAM

Voici une fissure défiant la mort :

CRÉER LA TABLE mydb.mybt COMME mydb.mytb

ALTER TABLE mydb.mybt MODIFY enum_col ENUM('Première valeur','Deuxième valeur')

SET wait_timeout=86400 SET interactive_timeout=86400

TABLES affleurantes AVEC VERROU DE LECTURE

Dans une session OS/SSH distincte, échangez les fichiers .frm

  • $ mv /var/lib/mysql/mydb/mytb.frm /var/lib/mysql/mydb/myxx.frm
  • $ mv /var/lib/mysql/mydb/mybt.frm /var/lib/mysql/mydb/mytb.frm
  • $ mv /var/lib/mysql/mydb/myxx.frm /var/lib/mysql/mydb/mybt.frm

ATTENTION : JE NE PEUX PAS PRENDRE DE CRÉDIT POUR CELA !

Cette technique provient de « MySQL haute performance : optimisation, sauvegardes, réplication et plus », pages 146-148 sous le sous-titre Accélérer ALTER TABLE. Le paragraphe 1 dit :

La technique que nous sommes sur le point de démontrer n'est pas prise en charge, non documentée et peut ne pas fonctionner. Utilisez à vos risques et périls. Nous vous conseillons de sauvegarder vos données au préalable !

Essaie ! (Merci de nous dire comment cela s'est passé)

MISE À JOUR 2011-10-05 17:49 HAE

Si la table est MyISAM et que vous disposez de suffisamment d'espace en production et d'une fenêtre de temps d'arrêt directe, essayez ceci :


Vendredi 30 mars 2018

Python - PyProj - Transforme les coordonnées dans la "grille HK80" en "WGS 84 / zone UTM 49N ou 49S"

J'essaie d'utiliser python pyproj pour effectuer la conversion ci-dessus (convertir/transformer de Hong Kong GRID en Hong Kong UTM), mais j'obtiens des valeurs différentes du résultat attendu.

Mon résultat de conversion attendu est : « Nord 836148, Est 822745" vers " Nord 828672.7449, Est 12488562.2742". Voir mes codes ci-dessous pour les deux zones (N et S):-

Se pourrait-il que mon résultat attendu soit incorrect ou qu'il me manque quelque chose ? Je veux certifier la sortie attendue en passant de : « Hong_Kong_1980_Grid_System » à « Hong_Kong_1980_UTM_Zone_49N / 49S » ?

Le résultat doit correspondre au tableau ci-dessus de la grille de Hong Kong 1980 à WGS84/UTM 49S

Arcpy - Pourquoi apprendre/utiliser les boîtes à outils Python plutôt que les outils de script Python ?

J'ai écrit quelques boîtes à outils Python (qui sont nouvelles dans ArcGIS 10.1), mais je n'ai pas encore décidé si/quand je devrais les écrire plutôt que les outils de script Python dans une boîte à outils standard.

J'ai pensé que l'aide en ligne pourrait m'éclairer lorsqu'elle précédera quelques points avec :


Une fois créés, les outils d'une boîte à outils Python offrent de nombreux avantages


Cependant, les cinq avantages énumérés semblent tous être liés à l'impossibilité d'utiliser Python pour écrire des outils, et aucun ne semble spécifier un avantage des boîtes à outils Python par rapport aux outils de script Python.

Les deux avantages auxquels je peux penser sont :

Suis-je en train de négliger le cas convaincant qui a conduit Esri à fournir la fonctionnalité Python Toolbox et, si oui, quelle est-elle ?

Les deux sont très, très proches en termes de fonctionnalités mais pas complètement équivalents.

Commun aux deux


  • Comprend un ensemble d'outils avec un alias unique pour l'identification
  • Peut appeler depuis arcpy

Unique aux fichiers TBX :


  • Peut inclure des références aux boîtes à outils système, aux outils COM personnalisés et aux outils .Net personnalisés
  • Les outils Model Builder peuvent être inclus dans la boîte à outils
  • La documentation de l'outil est stockée dans le fichier .tbx
  • Interface utilisateur de l'assistant facile pour configurer les paramètres et faire le code de validation

Unique aux boîtes à outils Python :


  • Texte brut, de sorte que les boîtes à outils peuvent être traitées de la même manière que n'importe quel autre code (utile dans les environnements où un bon outil de contrôle de révision est utilisé car vous pouvez retracer son historique de développement - regardez combien de projets sur GitHub utilisent PYT sur TBX .)
  • Avoir plus de contrôle sur certains types de paramètres (à savoir, vous pouvez créer des types de données composites et définir des schémas de tables de valeurs)
  • est sous licence La propriété peut être utilisée pour désactiver un outil si un produit ("ArcInfo") ou une extension ("spatiale") n'est pas disponible.
  • La documentation de l'outil est stockée dans des fichiers XML dans le même dossier que le .pyt
  • Désavantage: Aucune interface utilisateur d'assistant pour configurer les paramètres de l'outil, beaucoup plus de code d'échafaudage en Python, transforme le développement de Toolbox en une tâche de développement logiciel plus formelle que l'ajout d'un simple script d'implémentation. Le rechargement d'un pyt pour charger les modifications pendant le développement peut être lent si pyt est volumineux (cela peut être évité en plaçant des outils dans d'autres fichiers et en les important afin qu'ils n'aient pas besoin d'être recompilés).

Il y a quelque temps, alors que je travaillais sur ma première douzaine de boîtes à outils PYT, je me suis inquiété de la difficulté de configurer un PYT pour la première fois, j'ai donc développé un outil appelé tbx2pyt . Il faudra une boîte à outils TBX et la convertir en PYT avec une perte de code minimale. En fait, le PYT qui l'alimente était d'abord un TBX. Cela peut être un bon moyen de faire passer les outils existants au format Python Toolbox si vous le souhaitez. À tout le moins, il permet de paramétrer vos outils à l'aide de l'UI avant de passer au code.

Openlayers 2 - Comment charger des tuiles de carte en fonction de l'événement glisser/toucher

Nous construisons des API cartographiques pour javascript intégrées à notre propre serveur de données cartographiques (tuiles). (Bien que nous puissions utiliser des openlayers ou autre chose, mais nous ne pouvons pas pour des raisons de troisième partie).

En un mot, nous réécrivons quelque chose comme des openlayers.

Voici ce que nous avons fait :

Lorsqu'une carte est créée, elle aura le conteneur (élément dom), le centre (LatLng) et le zoom . Ensuite, nous allons organiser les tuiles à l'intérieur du conteneur en fonction du centre et zoomer.

Lorsque l'utilisateur fait glisser le conteneur. Nous allons enregistrer l'augmentation de la position de la souris. Calculez ensuite le nouveau centre de la carte, puis recalculez les tuiles requises et organisez-les.

Cela fonctionne comme prévu, mais nous avons constaté qu'il est difficile de faire glisser la carte. Il n'est pas fluide comme openlayers ou autre bibliothèque de cartes pendant l'opération de glissement.

Alors je me demande si nous allons dans le mauvais sens?

Avez-vous envisagé de regarder le code source d'OpenLayers pour voir comment ils le font ? Je ne peux pas dire que c'est quelque chose que j'envisagerais de faire car je préfère simplement utiliser OpenLayers tel quel. Il a une licence très ouverte, il ne devrait donc pas y avoir de problèmes. S'il s'agit d'un problème technique, alors assez juste, mais assurez-vous d'avoir pris suffisamment de temps pour être absolument sûr que vous ne pouvez pas simplement utiliser OpenLayers car la réécriture d'une API entière de carte sonne comme un cauchemar. Je m'excuse si vous avez déjà pensé à tout, mais je ne rendrais pas service si je ne le mentionnais pas au moins !

Pour en revenir à la question, vous pouvez regarder le code source d'OpenLayers pour voir comment ils procèdent. Je ne dirais pas que vous devriez simplement l'arracher, mais certainement vous inspirer et voir s'il y a quelque chose d'évident qui vous manque. Je ne sais pas comment fonctionne la licence pour OpenLayers (et peut-être que quelqu'un de plus compétent pourrait m'éclairer) mais je suis sûr que si vous utilisiez des parties de la source OpenLayers, vous n'auriez qu'à les leur attribuer de manière appropriée dans votre code source . Même si vous ne le faites pas, vous devriez juste comme bonne pratique. Quoi qu'il en soit, voici un lien vers le module OpenLayers 'DragPan' sur GitHub - OpenLayers DragPan - Vous devrez peut-être creuser un peu à partir de là pour trouver exactement ce que vous recherchez, ou vous pouvez commencer à chercher par le haut - OpenLayers sur GitHub


1 réponse 1

Le score f1 vous donne la moyenne harmonique de précision et de rappel. Les scores correspondant à chaque classe vous indiqueront la précision du classificateur dans la classification des points de données dans cette classe particulière par rapport à toutes les autres classes.

Le support est le nombre d'échantillons de la vraie réponse qui se trouvent dans cette classe.

Vous pouvez trouver de la documentation sur les deux mesures dans la documentation sklearn.

La dernière ligne donne une moyenne pondérée de la précision, du rappel et du score f1 où les poids sont les valeurs de support. donc pour plus de précision, la moyenne est (0,50*1 + 0,0*1 + 1,0*3)/5 = 0,70 . Le total est juste pour le support total qui est de 5 ici.


Que signifient les valeurs de la colonne clazz (osm2po) ? - Systèmes d'information géographique

Si vous développez une carte choroplèthe de données ordonnées, l'une des premières décisions à prendre concerne la classification : quelles valeurs doivent être associées à chaque couleur. En d'autres termes, quelles parts doivent appartenir à la catégorie la plus basse, quelles parts doivent appartenir à la catégorie la plus élevée et comment le reste des parts doit être réparti entre les autres catégories.

Parmi les nombreux choix faits par les analystes et les concepteurs, les décisions de classification des données peuvent être parmi les plus importantes, mais aussi les plus difficiles à comprendre. Un spécialiste SIG doit faire des choix non seulement sur le nombre de classes différentes dans lesquelles les données doivent être classées, mais aussi sur les plages de valeurs de ces classes. Un léger ajustement des "ruptures" dans les plages de valeurs des données ordonnées, par exemple, pourrait modifier considérablement la carte et révéler des tendances qui n'ont pas été détectées auparavant (ou qui ne sont pas présentes).

Dans cette section, deux des méthodes « par défaut » les plus courantes de classification des données sont présentées. Ce sont deux des nombreux choix disponibles dans les versions récentes d'ArcView, et un concepteur doit être conscient des différences entre toutes les méthodes. Chacun a ses avantages et ses inconvénients.

Ces méthodes sont illustrées à l'aide des données suivantes :

Les données ci-dessus sont classées dans les schémas Quanitle et Equal Interval dans le tableau ci-dessous. La première lettre de chaque comté est indiquée dans la colonne « comtés » et les valeurs de données correspondantes (la hauteur de la barre dans le graphique à barres) sont répertoriées dans la colonne « plages », représentant les plages de valeurs pour chacune des quatre classes.

Remarquez tout de suite les pièges possibles de ces méthodes. Avec une classification quantile à quatre catégories, il y a un nombre égal de comtés dans chaque classe, mais notez que les comtés de Durst et Evans, bien qu'ils aient des valeurs d'attribut identiques, sont placés dans des classes différentes. De plus, les comtés de Manto et de Niles sont placés avec les comtés extrêmes d'Orton et de Percy, plutôt qu'avec le comté de Lewis, auquel ils ressemblent beaucoup plus. Cette méthode, dans ce cas, conduit à une visualisation trompeuse.

En passant à une méthode d'intervalle égal à quatre catégories, le problème le plus évident est que seules trois des quatre classes contiennent réellement des points de données. Les plages de chaque classe (13 %) sont les mêmes, mais parce que ces données sont asymétriques (ont quelques points de données très différents des autres), aucune valeur d'attribut de comté ne tombe en fait dans la troisième classe. Cela réduit l'efficacité de la visualisation en éliminant efficacement une couleur de remplissage.

Regardez à quel point ces cartes - de données identiques - apparaissent différentes, selon le schéma de classification utilisé.

Des méthodes plus efficaces pour visualiser ces données existent.

Pourquoi quelqu'un les utiliserait-il, s'ils sont si limités ?

Les deux schémas de classification ci-dessus sont les plus faciles à calculer et l'un ou l'autre est généralement la classification par défaut dans la plupart des SIG. Ces méthodes sont adéquates pour afficher des données qui varient linéairement, c'est-à-dire des données sans valeurs aberrantes qui ont tendance à fausser la moyenne des données loin de la médiane. Un graphique de ces données comme celui ci-dessus contiendrait des colonnes dont la hauteur augmenterait également de gauche à droite, les "étapes" entre les colonnes seraient les mêmes.

Toutes les données commandées doivent être examinées pour déterminer si la modification de la méthode de classification a ou non un impact significatif sur l'affichage. Si tel est le cas, une méthode autre que les deux décrites dans cette section doit être utilisée pour la représentation visuelle la plus précise et la plus informative de l'information.


Dans une base de données, zéro est une valeur. La valeur null signifie qu'aucune valeur n'existe. Lorsqu'il est utilisé comme valeur, null n'est pas un emplacement mémoire. Seuls les pointeurs contiennent des emplacements mémoire. Sans caractère nul, une chaîne ne se terminerait pas correctement, ce qui poserait des problèmes.

Dans la programmation C et C++, un pointeur est une variable qui contient un emplacement mémoire. Le pointeur null est un pointeur qui ne pointe intentionnellement vers rien. Si vous n'avez pas d'adresse à attribuer à un pointeur, vous pouvez utiliser null. La valeur nulle évite les fuites de mémoire et les plantages dans les applications qui contiennent des pointeurs. Un exemple de pointeur nul en C est :


6 réponses 6

Vous souhaitez utiliser une expression CASE d'un certain type.

Dans SQL Server, le code ressemblerait à ceci :

Éditer: Comme indiqué dans les commentaires (et certaines des autres réponses), ELSE n'est pas nécessaire si vous mettez une clause WHERE sur la déclaration.

Cela évite les mises à jour inutiles. L'important dans les deux cas est de se rappeler qu'il existe des options autres que M & W (NULL par exemple) et que vous ne voulez pas entrer d'informations erronées. Par exemple:

Cela remplacerait tous les NULLs (ou autres genres possibles) par « M », ce qui serait incorrect.

Quelques autres options seraient

Dans Oracle, vous pouvez utiliser un CASE car les autres réponses ont :

Vous pouvez également utiliser un DECODE :

Pour basculer entre deux valeurs seulement, vous pouvez également essayer cette astuce, qui n'utilise pas d'expression CASE (en supposant Transact-SQL ici) :

Selon la valeur actuelle de Gender , ASCII(Gender) annulera soit ASCII('M') soit ASCII('W') , laissant l'autre code à transformer par la fonction CHAR() en caractère correspondant.

Je laisse cela juste pour la comparaison, cependant. Bien que cette option puisse avoir un semblant d'élégance, une solution utilisant une expression CASE serait sans doute plus lisible et donc plus facile à maintenir, et il serait certainement plus facile d'étendre à plus de deux valeurs.


Que signifie exactement &ldquoNo Join Predicate&rdquo dans SQL Server ?

MSDN "Missing Join Predicate Event Class" le dit "indique qu'une requête en cours d'exécution n'a pas de prédicat de jointure".

Mais malheureusement, cela ne semble pas être aussi facile que cela.

Par exemple, situation très simple :

Il n'y a pas de données dans les tables, il n'y a pas d'avertissement non plus, bien qu'il n'y ait évidemment pas de prédicat de jointure.

Si je regarde la documentation de SQL Server 2005 (le même lien, juste une autre version du serveur), il y a une phrase supplémentaire : "Cet événement est produit uniquement si les deux côtés de la jointure renvoient plusieurs lignes." Cela serait parfaitement logique dans la situation précédente. Il n'y a pas de données, donc les deux côtés renvoient 0 ligne et aucun avertissement. Insérez des lignes, recevez un avertissement. Ok, cool.

Mais pour la prochaine situation déroutante, j'insère les mêmes valeurs dans les deux tables :

Pourquoi cela est-il ainsi?

Noter: certains scripts que j'ai utilisés pour détecter ces mauvaises requêtes sur mon serveur.


Vous pouvez utiliser l'argument colClasses de read.csv pour sélectionner les colonnes souhaitées. Dans ce cas, vous pouvez définir colClasses sur c("NULL", NA, NA)

Plus généralement, vous pouvez utiliser colClasses pour spécifier les types particuliers de colonnes. NA signifie utiliser l'approche par défaut qui consiste à essayer de déterminer automatiquement ce qu'est la colonne. Consultez la page d'aide de read.csv pour plus de détails.

Une autre option consiste à lire tout le fichier, mais à ne conserver que deux des colonnes, par exemple :

ou, en utilisant des noms de colonnes, par exemple. si les colonnes sont nommées 'col1, col2, col3'

Celui-ci prend moins de temps par rapport aux réponses fournies


Différence entre la moyenne et la moyenne

Moyenne vs Moyenne

Moyen ou moyen ? Y a-t-il des différences ?

Le terme « moyenne » est utilisé pour exprimer que quelque chose est statistiquement la norme. Cela signifierait qu'une valeur est attendue, moyenne, habituelle ou commune. La ‘average’ représente une valeur qui représenterait au mieux un échantillon.

En mathématiques, nous considérons normalement la moyenne comme la somme de toutes les valeurs divisée par le nombre de valeurs ajoutées. À proprement parler, il s'agit de la "moyenne arithmétique" ou simplement appelée "moyenne arithmétique". La moyenne est presque considérée comme synonyme de moyenne, mais les statisticiens ne seront certainement pas d'accord, car, par essence, la moyenne n'est qu'une forme de description d'une moyenne.

Une moyenne peut être décrite de plusieurs manières. En plus de l'exprimer comme la moyenne de l'échantillon, il peut également être donné comme la médiane ou le mode.

La médiane est le point central de l'ensemble. En statistique, c'est généralement le nombre qui apparaît au milieu d'un ensemble de nombres. Une description de la moyenne peut être dans la médiane, parfois, si elle est considérée comme la manière la plus appropriée de décrire la tendance centrale d'un échantillon particulier.

Le mode est la valeur qui apparaît le plus fréquemment dans un ensemble de données. Il est également considéré comme une forme de moyenne. Il indiquera que la donnée la plus fréquente est la moyenne de l'échantillon. C'est aussi l'une des manières les plus courantes d'exprimer une moyenne, à côté de la moyenne.

Cela dit, le terme « moyenne » englobe plusieurs façons de mesurer quelle valeur caractérise le mieux un échantillon particulier. Les termes et les mesures qui sont utilisés dépendront vraiment de la situation. Cela dépendra grandement de la façon dont vous souhaitez décrire un certain ensemble de données ou un échantillon.

De plus, la moyenne peut également être de plusieurs types, par ex. moyenne quadratique, moyenne harmonique, moyenne géométrique, etc. Apparemment, la moyenne arithmétique est la seule qui se distingue comme une forme de moyenne.

Dans le langage, les gens utiliseront normalement le terme « moyenne » dans les conversations informelles. La moyenne est généralement utilisée par les mathématiciens et les statisticiens.

1. La moyenne peut être en moyenne (moyenne arithmétique), en médiane ou en mode. La moyenne est essentiellement une forme de description d'une moyenne de l'échantillon.

2. La moyenne peut également être de plusieurs types, mais seule la moyenne arithmétique est considérée comme une forme de moyenne.

3. ‘Average’ est généralement utilisé dans les conversations informelles en anglais, tandis que ‘mean’ est généralement utilisé dans le langage technique.