Suite

Utilisation du mode de mise à jour avec le graveur SDE30 dans FME


Je reçois l'erreur suivante lors de l'exécution d'une opération de mise à jour sur une table dans ArcSDE à l'aide du FME 2011 et du rédacteur SDE30.

Erreur lors de la récupération de la liste de mots clés dbtune : SDE_ERROR_CODE (-66) Valeur de paramètre non valide transmise à la fonction

Des idées pourquoi cela pourrait être?

La table a été créée à l'aide du rédacteur de géodatabase dans FME 2011.

MISE À JOUR 13/11/2014

J'ai créé un petit harnais de test qui reproduit l'erreur.

Si je bascule le graveur sde30 sur :

la table existe = oui

puis l'erreur disparaît,

bien que la mise à jour ne fonctionne pas - une opération d'insertion se produit à la place même avec l'écrivain en mode UPDATE et fme_db_operation exposé et défini sur 'UPDATE', cependant, lorsque je reviens à la table exist=no, l'erreur revient.


La mise à jour sera mise à jour si la clé existe ou insérée si ce n'est pas le cas.

Je pense que l'erreur que vous voyez lorsque vous dites 'existe=no' est raisonnable, vous voulez donc la définir comme 'exists=yes' et résoudre le problème de l'insertion plutôt que de la mise à jour.

Avez-vous ajouté l'attribut à votre rédacteur de la clé que vous utilisez pour la mise à jour ? Et si oui, avez-vous signalé cela comme « colonnes de clé SQL » ou l'équivalent sur l'écrivain ?


Mettre à jour une table sans utiliser SQL_SAFE_UPDATES

J'essaie de mettre à jour certains enregistrements à l'aide de cette requête qui est essentiellement un moyen de définir un "état" pour un client en tenant compte de ses "jours depuis la dernière commande":

Code d'erreur : 1175. Vous utilisez le mode de mise à jour sans échec et vous avez essayé de mettre à jour une table sans WHERE qui utilise une colonne KEY. Pour désactiver le mode sans échec, basculez l'option dans Préférences -> Éditeur SQL et reconnectez-vous.

J'utilise la clé de table dans le WHERE final, c1.id est la clé de table des clients. L'utilisation de SET SQL_SAFE_UPDATES = 0 n'est pas une option. J'ai également essayé d'utiliser WHERE c1.id > 0 en vain.

Notez que j'ai essayé d'exécuter la requête manuellement en changeant SET SQL_SAFE_UPDATES = 0 , la requête fonctionne comme prévu mais cela est censé être un processus automatique.

  1. En utilisant une seule requête, SQL_SAFE_UPDATES ne peut pas être utilisé.
  2. En utilisant les curseurs Python, SQL_SAFE_UPDATES peut être utilisé. (voir NOTE DE CTÉ)
  3. [insérer une option ici]
  4. (Je ne veux pas faire cela) Itérer sur chaque enregistrement (à l'aide de l'ORM Python) et mettre à jour l'enregistrement. C'est stupide et ça prendra une éternité.

FME 2007 Nouvelles fonctionnalités

Les outils d'extraction, de transformation et de chargement spatiaux (ETL) tels que FME de Safe Software ont apporté la business intelligence géospatiale à une myriade d'organisations depuis plus d'une décennie.

Avec la plate-forme FME de Safe comme outil d'extraction et de transformation de données de base, les entreprises et les agences gouvernementales ont eu l'interopérabilité inhérente pour créer un canal de données inestimable vers les informations spatiales et pour partager ces informations dans toute l'entreprise en temps réel. En effet, avec son interface Workbench particulièrement polyvalente, FME est devenu le facilitateur de facto pour exploiter l'intelligence contenue dans les informations vectorielles spatiales. Et maintenant, FME est devenu raster.

Avec FME 2007, les utilisateurs SIG et non professionnels qui ont besoin d'utiliser, de transformer et d'incorporer des rasters dans leur flux de travail pourront utiliser toutes les fonctionnalités louées de FME pour tirer parti de leurs images raster. En bref, les clients pourront donner raster le traitement vectoriel FME.

Prise en charge des rasters de rendu

Prêt pour le raster

Jusqu'à récemment, l'industrie géospatiale disposait de deux camps raster et vectoriels distincts et des ensembles d'outils correspondants pour stocker, gérer et afficher les différents ensembles de données. Cette fracture s'est développée non pas par manque de volonté de faire converger les données vectorielles et raster - la communauté géospatiale a depuis longtemps compris les avantages de l'imagerie raster et comment elle peut ajouter une valeur considérable aux couches vectorielles - mais ce n'est que récemment que des outils sont apparus pour compléter les données vectorielles.

Au cours des dernières années, l'industrie a fait de grands progrès pour répondre à ce besoin en créant des outils qui fonctionnent à la fois avec le raster et le vecteur. ESRI et Oracle ont désormais ajouté le support raster à leurs bases de données. Ce qui manquait cependant, c'est un véritable outil ETL spatial qui gère à la fois l'imagerie raster et les données vectorielles.

En abordant le monde raster avec le même modèle réussi que l'entreprise a appliqué au monde vectoriel, Safe offre désormais à l'industrie géospatiale un moyen de déplacer et de gérer efficacement les données raster.

Basé sur l'architecture FME traditionnelle, FME 2007 fournit le cadre pour charger, mosaïquer, découper, reprojeter et servir une multitude de formats raster à partir de bases de données disparates. Désormais, les utilisateurs auront la possibilité d'intégrer et de partager facilement des gigaoctets, voire des téraoctets, d'images raster via un seul outil ETL spatial.


Tout d'abord, vous devez importer ParseMode de télégramme comme ceci :

Ensuite, tout ce dont vous avez besoin est de spécifier parse_mode=ParseMode.HTML . Voici un exemple fonctionnel :

Et on voit que ça marche :

Mise à jour : En fait, parse_mode='html' (comme suggéré par @slackmart) et parse_mode='HTML' que vous avez utilisé vous-même fonctionnent pour moi !

Une autre mise à jour (selon votre commentaire) : vous pouvez utiliser plusieurs balises. En voici un exemple, avec hyperlink , bold et italic :

Encore une autre mise à jour : Concernant votre commentaire :

. ai-je des limitations sur les balises HTML ? Je ne peux pas utiliser quelque chose comme <img> ou <br> pour tracer une ligne

Vous essayez maintenant de formater le légende d'une image, en utilisant HTML , ce qui signifie que vous formatez un texte , donc évidemment, vous ne pouvez pas utiliser "quelque chose comme <img> ." Il doit s'agir d'une "balise de formatage de texte" (plus <a> ). Et même pas tous ! Je pense que vous ne pouvez utiliser que ceux-ci : <a> , <b> , <strong> , <i> et <em> .

Si vous essayez d'utiliser une balise de mise en forme de texte telle que <del> , cette erreur s'affichera :

Impossible d'analyser les entités : non pris en charge balise de début "del" au décalage d'octet 148

Ce qui est dommage! J'aimerais pouvoir faire quelque chose comme ça dans les légendes des images. ou quelque chose comme ça!


Ton problème vient de cette ligne :

Ce que vous dites là n'est pas ce que vous pensez dire. Vous confondez = (affectation) avec == (comparaison).

Vous dites essentiellement "Alors que j'affecte 'a' à la variable 'mode' et que 'a' n'est pas 0. ", ce qui sera bien sûr toujours vrai.

ou, "Alors que la variable 'mode' contient la lettre 'a' . "

Il ne vous reste plus qu'à programmer d'une manière ou d'une autre la valeur de mode dans votre boucle while.

Vous pouvez en savoir plus sur les boucles while ici :

Le while(serial1.available()) peut être transformé en if : la fonction de boucle est déjà exécutée dans une boucle, comme son nom l'indique :-)

Et désemboîtez le tout intérieur.

ici c'est à haut niveau, ce qui est probablement plus facile à comprendre :

Assurez-vous simplement de ne pas boucler ni do_one_iteration_in_remote_mode() ni do_one_iteration_in_auto_mode() .

J'ai remplacé à la fois 'mode' et 'control' (ils étaient identiques) par une seule variable, btChar . A la fin de setup() , attendez qu'une transmission soit reçue avant d'entrer dans la boucle principale.

Une fois que la boucle principale commence, une boucle while s'exécute jusqu'à ce que la série reçoive une nouvelle transmission. Une fois reçu, il est lu, btChar est mis à jour et la boucle principale recommence.

Vous pouvez adapter davantage la configuration de la boucle while pour vous assurer que la boucle principale ne commence pas tant que le caractère correct n'est pas reçu - remplacez la ligne par :

L'utilisation d'une instruction switch-case dans la boucle while principale n'est pas essentielle, et je l'ai incluse par intérêt plus que par nécessité. Vous pouvez utiliser des instructions if à la place, avec une pour « a » et une pour « r ». Cependant, dans le cas où vous auriez un troisième ou un quatrième (ou plus) mode, une instruction switch-case, à mon avis, semble plus facile à lire.


Réglage des métaparamètres PPO : un aperçu de haut niveau de ce que fait chaque paramètre

J'utilise l'algorithme PPO implémenté par tensorforce : https://github.com/reinforceio/tensorforce . Cela fonctionne très bien et je suis très content du résultat.

Cependant, je remarque qu'il existe de nombreux métaparamètres disponibles à donner à l'algorithme PPO :

Ma question est donc : existe-t-il un moyen de comprendre, intuitivement, le sens/l'effet de tous ces métaparamètres et d'utiliser cette compréhension intuitive pour améliorer les performances d'entraînement ?

Jusqu'à présent, j'ai atteint - d'un mélange de lecture de l'article du PPO et de la littérature autour, et de jeu avec le code - aux conclusions suivantes. Quelqu'un peut-il compléter/corriger ?

effet de spéc_réseau: c'est la taille du 'réseau principal'. Assez classique : il faut qu'il soit assez gros pour avoir des prédictions valables, pas trop gros non plus sinon c'est dur de s'entrainer.

effet des paramètres dans mode_mise à jour: c'est la fréquence à laquelle les mises à jour du réseau sont effectuées.

taille du lot est le nombre utilisé pour une mise à jour par lots. Vous n'êtes pas sûr de l'effet ni de ce que cela signifie exactement en pratique (tous les échantillons sont-ils prélevés sur seulement 10 lots de la relecture de la mémoire) ?

la fréquence est la fréquence à laquelle la mise à jour est effectuée. Je suppose qu'avoir une fréquence élevée rendrait l'entraînement plus lent mais plus stable (en tant qu'échantillon provenant de lots plus différents) ?

unité: aucune idée de ce que cela fait

Mémoire: c'est la mémoire tampon de relecture.

taper: pas sûr de ce que cela fait ou comment cela fonctionne.

include_next_states: je ne sais pas ce que cela fait ou comment cela fonctionne

capacité: Je pense que c'est le nombre de tuples (état, action, récompense) stockés. Je pense que c'est un métaparamètre important. D'après mon expérience, si c'est trop faible par rapport au nombre d'actions dans un épisode, l'apprentissage est très mauvais. Je suppose que c'est parce qu'il doit être assez grand pour stocker BEAUCOUP d'épisodes, sinon le réseau apprend à partir de données corrélées - ce qui est mauvais.

Mode de distribution: devinez c'est le modèle pour la distribution des contrôles ? Aucune idée de ce que font les paramètres là-bas.

PGModèle: Aucune idée de ce que font les paramètres là-bas. Ce serait intéressant de savoir si certains devraient être modifiés / lesquels.

PGLRModèle: idem, aucune idée de ce que font tous ces paramètres / s'ils doivent être modifiés.

PPOAgend: idem, aucune idée de ce que font tous ces paramètres / s'ils doivent être modifiés.


Mise à jour de la table en fonction des clés primaires composites de la table dérivée

J'ai deux tables TableA et TableB définies comme suit :

TableA a 4 colonnes id1 (clé primaire), id2 (clé primaire), code , enable .

TableB a 3 colonnes id (clé primaire), code , loc .

TableB.code correspond à TableA.code .

Je voudrais mettre à jour TableA.enable pour l'entrée avec TableB.loc égale à foo dans MySQL. Dans des conditions générales, cela devrait faire le travail :

Mais dans MySQL Workbench, j'ai eu l'erreur suivante : (puisque TableB.loc n'est pas une clé primaire)

Code d'erreur : 1175. Vous utilisez le mode de mise à jour sans échec et vous avez essayé de mettre à jour une table sans WHERE qui utilise une colonne KEY. Pour désactiver le mode sans échec, basculez l'option dans Préférences -> Éditeur SQL et reconnectez-vous.

J'ai donc tenté d'imbriquer une requête pour récupérer les deux valeurs de clé primaire de TableA et mettre à jour TableA :

Mais cela renvoie la même erreur, j'ai donc essayé de voir si je pouvais utiliser la colonne de clé primaire dans mon instruction WHERE.


Mettre à jour le micrologiciel HP Proliant Gen 10 exécutant VMWare esxi 6.5

J'ai un microserveur HP Proliant Gen 10 exécutant VMWare ESXi 6.5. Je n'ai pas mis à jour le firmware depuis que je l'ai, mais j'ai récemment commencé à avoir des problèmes de surchauffe. J'ai trouvé des articles disant que la mise à jour du firmware devrait résoudre ce problème.

À l'origine, j'essayais de mettre à jour le firmware en mode en ligne, après avoir eu du mal avec les instructions du Service Pack HP Gen 10 pour Proliant, j'ai appelé le support technique qui m'a conseillé de faire la mise à jour en mode hors ligne à l'aide d'une clé USB amorçable. J'ai essayé de créer une clé USB amorçable à l'aide de Rufus, cela a produit des erreurs lorsque j'ai essayé de l'exécuter, j'ai donc découvert que je devais utiliser usbkey.exe trouvé dans le fichier ISO du service pack. Cela a mieux fonctionné car il a démarré et s'est exécuté en mode de mise à jour automatique.

La mise à jour a atteint 97% en disant "Montage de l'image du système de fichiers racine, veuillez patienter..." et est restée bloquée. Je l'ai laissé fonctionner pendant la nuit et il était toujours à 97%. Je l'ai arrêté et réessayé et j'ai eu le même problème.

Après quelques recherches, j'ai découvert que je devais peut-être mettre à jour le contrôleur RAID, je l'ai fait à l'aide du pilote de contrôleur HPE ProLiant Gen 10 Smart Array pour VMWare vSphere 6.5 (fichier VIB) et j'ai réessayé la mise à jour du micrologiciel à partir du service pack. Encore une fois, il est passé à 97% et s'est bloqué.


La première chose à faire est de vérifier que vous avez le bootloader. Les nouvelles radios devraient l'avoir installé. (Vérifiez simplement que vous disposez du micrologiciel du module multiprotocole v1.2.1.85 ou version ultérieure) Si vous n'avez pas installé le chargeur de démarrage, voici une vidéo expliquant comment : Correctif « Mise à jour recommandée » du cavalier T16 (comment flasher le module multiprotocole interne).

En supposant que vous ayez le chargeur de démarrage, la prochaine étape consiste à aller ici : Téléchargements de micrologiciels MULTI-Module. Ici, vous pouvez obtenir le dernier firmware pour n'importe quel module multiprotocole, donc cela fonctionne pour plus que le T16. Sur la gauche, recherchez le module que vous souhaitez mettre à jour. Dans ce cas, le module interne Jumper T16 Pro.

Après cela, la plupart des informations sont remplies, alors remplissez simplement le reste (dans ce cas, l'ordre des canaux)

Obtenez le fichier qui correspond à l'ordre des chaînes de votre radio :

Placez le fichier dans le dossier FIRMWARE de la carte micro SD du Jumper T16, puis insérez la carte dans le T16 et allumez-le. Appuyez longuement sur la touche système, appuyez une fois sur le bouton de page, faites défiler jusqu'à [FIRMWARE] et cliquez dessus, appuyez longuement sur le nouveau fichier, puis sur Flash Internal Multi.


Exercice : Système de téléchargement de données : Sélection de couche

En tant qu'analyste technique dans le département SIG d'une ville, vous venez de démarrer un projet pour permettre à d'autres départements de télécharger des données d'orthophotos, plutôt que d'avoir à vous demander de les créer pour eux. Non seulement leurs demandes seront traitées plus rapidement, mais vous passerez également moins de temps sur cette tâche.

Jusqu'à présent, vous avez créé un espace de travail simple pour traduire les orthophotos au format JPEG. À cela, vous avez ajouté des paramètres publiés pour la transformation, le format et le système de coordonnées. L'espace de travail a été publié sur un service de téléchargement de données sur FME Server.

L'une des demandes fréquentes que vous recevez lorsque vous traduisez des données d'orthophotos consiste à ajouter des données vectorielles en tant que superposition sur le raster. C'est très simple dans FME avec le transformateur VectorOnRasterOverlayer. Cependant, pour déployer cela sur FME Server, vous devez donner aux utilisateurs finaux le contrôle des couches vectorielles incluses.

1) Ouvrir l'espace de travail
Ouvrez l'espace de travail de l'exercice 3 ou l'espace de travail de début répertorié ci-dessus. Vous pouvez voir qu'il se compose d'un lecteur, de deux écrivains et de deux transformateurs, ainsi que de quelques paramètres publiés.

Pour ajouter - par exemple - des entités routières à la sortie raster nécessite d'abord un lecteur pour ces entités routières, c'est donc la première étape.

2) Ajouter un lecteur
Sélectionnez Lecteurs > Ajouter un lecteur et utilisez la configuration suivante :

Format lecteur Conception de la MicroStation Bentley (V8)
Ensemble de données du lecteur C:FMEData2017DataTransportRoadsDGN.dgn
Paramètres du lecteur Regrouper les éléments par : noms de niveau
Options de flux de travail Type d'entité fusionnée unique

Nous utilisons ici l'option Type d'entité fusionnée unique car il existe plusieurs couches source et pourtant, car elles sont superposées sur le raster en tant que groupe, nous n'avons pas vraiment besoin de les diviser de quelque manière que ce soit.

3) Ajouter le transformateur VectorOnRasterOverlayer
Ajoutez un transformateur VectorOnRasterOverlayer. Connectez le type d'entité DGN au port d'entrée Vector et la sortie du transformateur RasterMosacker au port d'entrée Raster :

Vous pouvez vérifier les paramètres de ce transformateur mais, pour l'instant du moins, nous les laissons tels quels.

4) Créer un paramètre utilisateur
Maintenant que nous avons des données sources, nous pouvons créer un paramètre pour contrôler les couches de ces données qui doivent être lues.

Dans la fenêtre du navigateur, recherchez les paramètres DGN Reader&aposs, développez la section Entités à lire et localisez le paramètre appelé Types d'entités à lire. Vous verrez qu'il est déjà publié - grâce à notre utilisation du type d'entité fusionné unique :

Cliquez avec le bouton droit sur le paramètre et choisissez Modifier la définition de paramètre utilisateur. Cela fera apparaître une boîte de dialogue qui ressemble à ceci :

5) Modifier le paramètre utilisateur
Dans la boîte de dialogue Modifier la liste des types d'entités, cochez la case intitulée Liste fixe, ainsi que la case intitulée Utiliser un autre nom d'affichage.

Cliquez sur Liste > Ajouter à partir du jeu de données actuel et, lorsque vous y êtes invité, sélectionnez tous les types d'entités de ce jeu de données. Cliquez sur OK et la boîte de dialogue ressemblera maintenant à ceci :

Ce que nous pourrions faire, c'est simplement créer un nom d'affichage pour chaque type de route et fermer la boîte de dialogue. L'utilisateur final pourra alors sélectionner l'une des couches individuelles. Cependant, pour ce projet, je pense que nous devrions leur donner un choix plus simple, et nous le ferons en regroupant les couches.

Donc, sous le nom d'affichage, entrez les valeurs à faire correspondre comme suit :

Afficher un nomType d'entité
Routes principalesArtériel
Routes principalesCollectionneur
Autres routesNon-Ville
Autres routesPrivé
Routes secondairesRésidentiel
Routes secondairesSecondaire
Autres routesAutre

La liste se triera par nom d'affichage et ressemblera à ceci :

Cela donnera à l'utilisateur le choix entre trois options : routes principales, routes secondaires, autres routes. Quel que soit leur choix, toutes les couches sources de ce choix seront renvoyées.

Une dernière tâche. Dans la partie inférieure de la boîte de dialogue, remplacez l'invite par quelque chose comme "Vector Roads to Overlay" :

C'est juste une petite chose mais cela aidera avec l'expérience de l'utilisateur final.

6) Enregistrer et exécuter l'espace de travail
Enregistrez l'espace de travail, puis exécutez-le dans FME Workbench pour le tester. Vous devriez pouvoir sélectionner l'un des trois types de routes, voire aucun d'entre eux.

Vérifiez que la sortie inclut les routes que vous avez sélectionnées.

7) Nettoyer les paramètres utilisateur
Si votre espace de travail est comme le mien, il y a un certain nombre de paramètres publiés supplémentaires dont nous n'avons pas vraiment besoin pour le moment. De plus, l'ordre des paramètres n'est pas bon. Profitons de cette occasion pour le nettoyer.

Recherchez et supprimez les paramètres publiés suivants :

  • SourceDataset_GEOTIFF
  • SourceDataset_DGNV8
  • DestDataset_JPEG
  • DestDataset_GENERIC

Enfin, laissez&aposs changer l'ordre des paramètres. Vous pouvez le faire en faisant glisser l'un au-dessus de l'autre dans la fenêtre du navigateur. Alors faites ceci et mettez les paramètres dans l'ordre qui vous semble le mieux :

8) Paramètres utilisateur raster
Maintenant, faisons quelque chose avec le raster source. Nous souhaitons que l'utilisateur puisse sélectionner les fichiers à lire, sans avoir à les télécharger. Localisez le lecteur dans la fenêtre du navigateur et double-cliquez sur le paramètre Source GeoTIFF File(s). Lorsque vous y êtes invité, sélectionnez tous les fichiers GeoTIFF dans le dossier Orthophotos.

Cela signifierait normalement que tous les fichiers seraient lus dans la traduction, mais le paramètre Types de fonctionnalités à lire permettra à l'utilisateur de choisir ceux à lire. Nous devons cependant apporter quelques modifications.

Ouvrez la définition du paramètre Types d'entités GeoTIFF à lire. Cliquez sur l'option pour une liste fixe. Pour répertorier toutes les tuiles disponibles, sélectionnez Liste > Ajouter à partir du jeu de données actuel et sélectionnez tous les fichiers.

Enfin, changez l'invite en quelque chose de sensé comme "Raster Tiles to Read".

Maintenant, exécutez à nouveau l'espace de travail pour vérifier notre boîte de dialogue de paramètres améliorée.

La raison en est que vous avez fait une erreur dans l'exercice 1, étape 1. Vous avez omis de définir le paramètre "Nom(s) du type de fonction" sur "De nom(s) de fichier".

9) Publier sur le serveur FME
Enregistrez l'espace de travail et publiez-le sur FME Server. Il y a deux choses à noter.

Premièrement, parce que nous avons supprimé les paramètres de l'ensemble de données source, FME nous proposera de télécharger les données. Si vos données se trouvent sur le même ordinateur que le serveur FME (ou sur un chemin autrement accessible au serveur), alors vous n'avez pas besoin de le faire et pouvez décocher cette case :

Si les fichiers ne sont pas accessibles, alors vous devrez tous les télécharger - mais au moins l'utilisateur final n'aura jamais à le faire.

Deuxièmement, n'oubliez pas de vous assurer que le service de téléchargement de données utilise le rédacteur "Output [GENERIC]".

Dans l'interface Web de FME Server, exécutez l'espace de travail, en prenant le temps d'admirer le nouvel ensemble de paramètres disponibles :

En dehors d'un environnement d'entraînement, nous pouvons souhaiter organiser les tuiles raster en groupes, mais nous vivons avec elles telles quelles pour l'instant.