Suite

Est-il possible de ne pas afficher le nœud dans l'édition du mod QGIS

Est-il possible de ne pas afficher le nœud dans l'édition du mod QGIS


J'ai en fait un plugin qui me permet de dessiner sur un calque vectoriel (je l'ai fait sur la base du plugin FreeHand Editing). Lorsqu'un mouseMoveEvent est détecté, il crée un nouveau point sur le calque vectoriel et crée une ligne entre celui-ci et le dernier point créé. Mon problème est que je veux afficher dans le mod d'édition uniquement les lignes et non les nœuds. Est ce que quelqu'un sait si c'est possible?

ÉDITER:

Ce n'est pas ce que je voulais dire, désolé si vous n'avez pas bien compris, je vous expliquerai mieux.

J'ai un calque vectoriel (et une option dans mon plugin pour en créer un) En mod d'édition, je peux dessiner librement des lignes avec la souris sur ce vecteur (les lignes correspondront au dessin, regarde la capture d'écran ci-dessous quand ce n'est pas en mod d'édition ).

Le problème est que dans le mod d'édition, je ne veux pas afficher l'image croisée des nœuds (vérifiez la capture d'écran ci-dessous) sur l'écran comme c'est réellement le cas, je veux juste montrer les lignes comme dans le mod sans édition


Il existe un moyen de faire ce que vous voulez et de ne pas afficher les nœuds en mode édition, ou de n'afficher en fait que les nœuds des sommets sélectionnés.

Entrer dans Paramètres/Options/Numérisation et puis vous verrez une section appelée Marqueurs de sommet. C'est ici que vous pouvez personnaliser les nœuds en sélectionnant pour ne les afficher que pour les entités sélectionnées, modifier la taille, modifier la forme (des x aux cercles transparents ou complètement désactivés.

Vous avez probablement déjà trouvé cette solution, mais cela pourrait aider d'autres comme moi qui ont cherché la même chose et qui sont tombés dessus…


Eh bien, si vous pouvez supprimer des sommets (nœuds) dans l'interface graphique du bureau qgis, vous pouvez également le faire par programmation. Donc, si j'ai bien compris, vous créez des lignes à partir de 2 points. Sont-ils créés en tant que nouveau calque ? Si c'est le cas, vous pouvez simplement créer chaque couche pour les points et la ligne. Et puis vous supprimez simplement la couche de points avec root.removeLayer(someLayer). Si votre calque de ligne n'est pas dans une relation parent/enfant, la suppression du calque de points ne devrait pas affecter le calque de ligne.

Mais si vous souhaitez conserver vos points pour une utilisation ultérieure, vous pouvez les "cacher" en définissant la visibilité du zoom de la couche. Ils seront toujours affichés en tant que couche mais ne seront pas vus.

Maintenant, si les points sont une couche, vous pouvez définir la visibilité comme ceci :

lyr.toggleScaleBasedVisibility(True) #active la visibilité basée sur l'échelle lyr.setMinimumScale(0.0) #définit l'échelle sur quelque chose que nous ne pouvons pas atteindre (disons 0) lyr.setMaximumScale(0.0)

La meilleure façon de gérer cela est de placer le nœud séparateur de plan de site dans votre fichier de plan de site XML et de définir l'attribut clickable sur false. S'il veut un contrôleur et/ou une action, créez-en un spécifiquement pour un séparateur.

Créez ensuite vos propres modèles pour le rendu du menu. Dans les modèles, vous pouvez examiner le modèle de nœud et mettre tous les attributs html que vous souhaitez dans le résultat rendu. Donc, si l'attribut cliquable du nœud du plan du site est faux, vous pouvez insérer une chaîne dans l'attribut de la classe html et faire en sorte que votre style CSS soit comme vous le souhaitez.

Le MvcSiteMap prend en charge un attribut 'cliquable' sur mvcSiteMapNode qui peut rendre un vide

mais je ne vois pas de moyen de spécifier la classe et cela semble nécessiter un contrôleur et une action valides !

Si ce n'est pas bon, alors JQuery pourrait le faire pour vous.

vous devriez obtenir la sortie requise.

J'ai créé un JSFiddle pour montrer qu'il fonctionne.

Ok, voici une solution mise à jour pour insérer le séparateur à l'emplacement souhaité : -


Vous aurez un problème si le nœud principal est à 97% et que vous passez un nœud à 97%. Vous devez dire

Vous aurez également un problème si l'étudiant que vous modifiez est le premier nœud, car ceci :

évaluera à vrai, et

ne sera jamais appelé, laissant prev = null. Puis quand tu arrives à

vous avez une référence nulle. Vous devez tester explicitement pour ajouter au nœud principal son propre cas particulier.


ÉDITER
Lorsque vous ajoutez à la tête, dans votre code, vous n'avez pas défini la tête pour qu'elle pointe vers votre nouveau nœud. Vous retournez l'ancienne tête, qui pointe maintenant vers le deuxième nœud de la liste. Essayer:


3 réponses 3

Le fichier torrc est juste un fichier texte plat, n'importe quel éditeur de texte (comme vim , gedit ou notepad.exe ) devrait suffire.

Ouvrez le fichier dans l'éditeur de texte et ajoutez les lignes, ou modifiez les lignes si les options existent déjà avec des définitions différentes.

L'emplacement par défaut du fichier dépend du système d'exploitation et de l'endroit d'où vous recevez tor. L'emplacement est déterminé par celui qui a construit le binaire tor. En fait, selon la façon dont il est installé ou distribué (par exemple, win32), vous n'aurez peut-être pas du tout de fichier torrc avec lequel travailler ou vous voudrez peut-être spécifier un emplacement différent. Dans ces cas, vous pouvez créer un nouveau fichier texte et insérer les options de configuration appropriées, puis spécifier un emplacement explicite avec le commutateur de ligne de commande -f, par ex. tor -f /usr/local/etc/torrc ou tor -f C: or orrc pour le pointer vers votre nouveau fichier. Le fichier n'a pas besoin de s'appeler torrc mais c'est la convention de nommage standard.

Il existe des guides sur le site Web du projet Tor pour OSX, Windows et Linux/UNIX.


3 réponses 3

Tout d'abord, cette solution est inspirée du nœud Interpolation From Curve Mapping dans les nœuds Animation qui offre plus d'informations sur l'utilisation des données de courbe.

L'idée est que Blender propose des courbes de mappage à divers endroits, une à laquelle nous pouvons ajouter dynamiquement des éléments sont des arbres de nœuds. En créant un nœud qui utilise des données de mappage de courbe, nous pouvons ensuite accéder à ces données à l'aide de layout.template_curve_mapping dans nos panneaux personnalisés. Alors que les nœuds d'animation créent un matériel d'aide, mon approche consiste à créer un groupe de nœuds personnalisé car il ne sera visible que dans le Ajouter->Groupe menu dans l'éditeur de nœuds qui le garde plus hors de la vue des utilisateurs qu'un matériau.

Bien que nous puissions ajouter des nœuds lors d'un dessin de panneaux (), nous ne pouvons pas modifier le nom, donc une solution pour avoir des noms plus utiles consiste à conserver un dictionnaire pour mapper les noms utiles sur les 'RGB Curves.12' moins utiles, cela devrait être stocké dans une propriété personnalisée de la scène afin que le mappage puisse être conservé entre les redémarrages. Une autre approche serait de créer un groupe avec un nœud pour chaque mappage que vous souhaitez utiliser.

Dans les paramètres de template_curve_mapping , le premier est le nœud basé sur la courbe que nous utilisons pour nos données de courbe, le second est la propriété qu'il utilise pour stocker la structure CurveMapping.


L'écart est dû au fait que vous définissez le point de connexion sur la flèche comme un nœud, qui n'a pas une largeur nulle. Au lieu de cela, vous devez utiliser une coordonnée. En plus de cela je recommande :

  • pour la ligne droite, utilisez la syntaxe draw (<coordinate 1>) -- (<coordinate 2>)
  • pour les unités, utilisez le package siunitx

Je dessinerais ton image de la manière suivante :

Addenda: Il semble que vous aimiez avoir l'image suivante :

Éditer: L'utilisation du package siunitx est désormais localisée en langue allemande.


3 réponses 3

En effet, l'objet renvoyé est un objet Map (MDN). Lorsque vous JSON.strigify un objet Map, il renvoie toujours <> . Il existe deux façons d'obtenir un JSON lisible qui stocke votre carte. La première consiste à parcourir toutes les entrées et à créer un JSON (en tenant compte des clés et des valeurs). Cela devrait être simple à réaliser.

Une autre façon consiste à créer un tableau à partir de la carte, puis à le chaîner.

Vous pouvez définir Map.prototype.toJSON qui fonctionne, mais ce n'est pas standard et est déconseillé. Il est automatiquement appelé par JSON.stringify s'il le trouve.

Une meilleure façon est de définir votre propre fonction de remplacement (et aussi la fonction de réactivation si vous devez reconstruire la carte à partir de JSON). Ici, j'encapsule également la carte représentant le tableau dans un objet spécial pour distinguer les cartes et les tableaux ordinaires en JSON :

L'erreur que vous obtenez à propos de la structure circulaire signifie que certains objets/tableaux contiennent des références à lui-même. Lorsque vous stockez des messages, vous n'avez pas besoin de stocker toutes les informations relatives aux canaux, etc., mais de ne stocker que les identifiants. Cela signifie donc étendre le remplaçant pour TextChannel s, ClientUser s, GuildMember s etc :


5 réponses 5

Je pense qu'il n'y a pas d'exception à cette règle. C'est ce que j'ai toujours lu, et je n'en ai jamais rencontré, ni en grec, ni en latin, ni même en allemand.

Il existe une hypothèse sur la cause de ce phénomène. Les mots neutres étaient historiquement limités aux objets inanimés ou aux choses qui ne peuvent pas agir. Dans une phrase de base, c'était rarement ou jamais la chose neutre qui agissait, et donc vous n'aviez pas besoin de cas pour faire la distinction entre l'agent et le patient/thème (entre "agir" et "être soumis à l'action"). Donc, si vous avez juste un verbe transitif et un mot neutre, il n'y a qu'une seule possibilité : la chose neutre est agi. Avec un verbe intransitif, il n'y a pas d'objet, donc c'est encore moins nécessaire. Ainsi, la sémantique rend la casse redondante pour les mots neutres.

Cette hypothèse s'inspire de notre connaissance des langages ergatifs-absolutifs, dans lesquels le « sujet » d'un verbe « intransitif » et « l'objet » d'un verbe « transitif » prennent le même cas (le cas absolutif), par opposition au 'sujet' d'un verbe 'transitif' (cas ergatif, de ergon « œuvre, acte, action », lié à travailler). En d'autres termes, le complément primaire d'un verbe est la chose qui n'agit pas et seuls certains verbes ont un complément secondaire, qui est une chose qui agit.

(Cela contraste avec les langues nominatif-accusatif, telles que les principales langues européennes, dans lesquelles le sujet d'un verbe intransitif prend le nominatif, mais l'objet d'un verbe transitif prend l'accusatif. Notre complément principal est le sujet, qui agit souvent et seuls certains verbes ont un complément secondaire, l'objet direct.)

Bien sûr, il s'agit d'une hypothèse, alors prenez-la avec un grain de sel. Mais c'est le seul que j'aie jamais entendu.

Pour répondre à votre deuxième question, cette règle est totalement sans exception, non seulement en latin mais dans toutes les langues indo-européennes (c'est-à-dire celles qui ont un genre neutre).

le genre neutre avait toujours des formes nominatives, accusatives et vocatives identiques dans les trois nombres

Par souci d'exhaustivité, il semble intéressant de noter qu'il existe une exception étrange.

Le gérondif est un nom dérivé d'un verbe, représentant une action (par exemple, volāndum "en volant"). Pour la plupart, il agit comme un neutre régulier de deuxième déclinaison.

Cependant, le gérondif n'a pas de nominatif régulier et utilise à la place le présent régulier actif infinitif du verbe (volāre, "voler").

Donc dans ce cas particulier, volāre est nominatif, et volāndum accusatif.

Cela semble un peu bon marché comme réponse ici, mais les liens connexes générés automatiquement me suggèrent l'excellent "Pascha" a-t-il déjà été utilisé comme nom neutre de première déclinaison? qui fournit ici un exemple possible d'exception. Absolument aucune de ces réponses n'est une recherche originale, je rapporte simplement ce que je vois dans cette question et ses réponses.

Notamment, la question note la question de l'accord nominatif/accusatif neutre, et cite Richard Haynes comme citant Pâques comme peut-être la seule exception à cette règle. Le demandeur, en revanche, semble ressentir l'existence de Pascham suggère plutôt que le mot est en fait féminin et non neutre en premier lieu.

Comme Pâques signifie "Pâque", c'est bien sûr du latin ecclésiastique et non du latin classique. La question y est détaillée sur son histoire et son étymologie, et le mot semble exister simultanément en tant que mot neutre de 1ère déclinaison, mot féminin de 1ère déclinaison et mot neutre de 3ème déclinaison (Pascha, Paschatis).

Les réponses à cette question fournissent un certain nombre d'exemples montrant son utilisation comme mot neutre de première déclinaison, en accord avec des adjectifs neutres (par ex. Sancti Paschae au génitif). Il comprend également des exemples de Pascham forme accusative utilisée, mais en accord avec les adjectifs féminins (par ex. totam Pascham). Aucun des exemples ne montre Pascham être en accord avec un adjectif neutre à l'accusatif.

Enfin, au moins une source (dans la question) déclare que la forme accusative de Pâques est en fait, Pâques, bien qu'il décrive autrement l'inflexion de la première déclinaison. Ce serait, bien sûr, un excellent exemple dans le sens inverse - même dans ce cas exceptionnel d'un nom neutre de première déclinaison, au moins certains auteurs ont encore ressenti le besoin de maintenir cette règle sur la nécessité de maintenir la déclinaison habituelle de la première - noms de déclinaison, et donc une inflexion « neutre de première déclinaison » autrement inutilisée a été inventée.

Comme aucun des exemples ne montre Pascham étant utilisé comme un mot clairement neutre, cependant, des recherches supplémentaires sur ce sujet seraient appropriées. Malheureusement, je ne suis pas du tout équipé pour le faire.


1 réponse 1

Ce que j'obtiens est une redirection HTTP 301 vers http://$server/updates/check/?foo=bar

Oui, car check est un sous-répertoire physique, donc mod_dir va (par défaut) "fixer" l'URL en ajoutant une barre oblique finale au chemin de l'URL via une redirection externe 301. Ceci est nécessaire pour que mod_dir puisse servir le DirectoryIndex (si vous en avez un).

Si vous avez modifié vos URL pour inclure la barre oblique de fin, vous n'auriez pas ce problème.

Vous pouvez éviter cette redirection en désactivant le DirectorySlash . Si vous faites cela, vous doit assurez-vous que les index de répertoires (mod_autoindex) sont désactivés pour éviter toute divulgation accidentelle de votre système de fichiers.

Par exemple, en haut de votre fichier racine .htaccess :

Cela signifie également que tous les autres répertoires ne seront pas directement accessibles sans ajouter manuellement la barre oblique de fin avec une réécriture interne (ou une redirection externe) - bien que cela puisse ou non être un problème pour vous.

METTRE À JOUR: En raison de cette "restriction", je serais enclin à modifier la structure du fichier (ou de l'URL) pour éviter de tels conflits, plutôt que de désactiver DirectorySlash .

Notez qu'il s'agit de directives Apache 2.2 et qu'elles sont auparavant obsolètes sur Apache 2.4. Vous devriez utiliser Exiger tout refusé et Exiger tout accordé à la place. Cependant, vous devez éviter de mélanger les anciennes/nouvelles directives auth car vous pouvez obtenir des résultats inattendus (l'une ne remplace pas nécessairement l'autre).


Retrouver toutes les sommes cumulées dans un DAG

Appelons G un DAG (graphe orienté acyclique) avec N nœuds étiquetés avec une valeur naturelle.

Nous définissons la somme cumulée d'un nœud v comme la somme de la valeur de tous les nœuds ancêtres de v (y compris v).

Par exemple, la somme cumulée de d dans le DAG suivant est 7 :

Est-il possible de calculer la somme cumulée pour un ensemble de M nœuds dans G, en moins de O(M*(N + E)) ?

Clarification: le calcul de la somme cumulée pour un ensemble de nœuds fait référence au calcul de la somme cumulée pour chaque nœud de l'ensemble.

Plus de précisions: pour une somme cumulée donnée, chaque ancêtre n'est compté qu'une seule fois (notez que les ancêtres de $u$ incluent $u$) :

Qui fait ne pas impliquer:

car cette dernière formule peut compter plusieurs fois les ancêtres. Par exemple, dans l'exemple du diamant, nous avons :

$cumsum(d) = 7$
$cumsum(b) = 3$
$cumsum(c) = 5$
donc $cumsum(d) eq 1 + cumsum(b) + cumsum(c)$

Pour calculer la somme cumulée d'un seul nœud v dans O(N + E), triez le DAG topologiquement et parcourez la liste triée des sommets vers l'arrière, en altérant tous les ancêtres de v avec les arêtes arrière et en ajoutant les valeurs de tous les ancêtres. (Vous pouvez aussi simplement faire un DFS pour le même prix).

Faire cela pour chaque nœud dans l'ensemble donné de M nœuds donne un temps d'exécution de O(M*(N + E)).

Bien que cela n'affecte pas le temps d'exécution final, le tri topologique ne peut être effectué qu'une seule fois avant de parcourir chaque calcul de somme cumulée.


7 réponses 7

Si un système de fichiers a été monté en lecture seule, chmod ne fonctionnera pas car il s'agit également d'une opération d'écriture.

Essayez de le remonter en lecture-écriture :

Si l'appareil dispose d'un verrou en écriture (comme les cartes mémoire SD), vous devez le désactiver. Les verrous matériels ne peuvent pas être désactivés par le logiciel. Notez que le verrou en écriture sur les cartes mémoire SD est situé à partir de la vue où vous voyez les lettres près du coin supérieur gauche et cela ressemble à un très petit interrupteur.

Certains pilotes de système de fichiers peuvent également ne pas prendre en charge les opérations d'écriture, c'est le cas avec l'ancien module NTFS pris en charge par Linux. Pour les systèmes de fichiers NTFS, assurez-vous d'utiliser le pilote ntfs-3g qui devrait être sélectionné automatiquement de nos jours. Sinon, vous pouvez forcer le pilote avec quelque chose comme :

(où /dev/sdb1 doit être remplacé par votre périphérique de bloc et /mnt/ par votre destination)

Pour les systèmes de fichiers NTFS, ce problème peut survenir lorsqu'il n'est pas correctement démonté (probablement en cas d'arrêt inattendu de Windows). Dans de tels cas, les systèmes de fichiers sont marqués comme verrouillés.

Vous pouvez les monter correctement à l'aide de la commande ntfsfix suivante, par exemple :

Veuillez remplacer /dev/sda3 par votre propre nom de périphérique.

J'ai eu ce problème sur plusieurs clés USB. À chaque fois, j'ai cherché une réponse et essayé diverses suggestions, notamment l'utilisation de Terminal pour exécuter des commandes, le reformatage sur les machines Linux et Windows, etc. Le tout en vain.

Cela m'est encore arrivé aujourd'hui alors je suis encore allé voir si je pouvais trouver une solution. J'ai essayé les choses ici, mais elles n'ont pas fonctionné.

En désespoir de cause, je suis de nouveau allé à Utilitaire de disque. J'ai démonté le lecteur, puis j'ai appuyé sur "Formater" sur la partie partition, pas sur la partie lecteur - l'USB n'avait que la seule partition. Cette fois, ça FONCTIONNE. Ensuite, je suis allé à la partie lecteur et j'ai reformaté à nouveau la partition unique en tant que lecteur de démarrage principal et j'ai joué un peu plus avec.

Le résultat est que je suis maintenant capable de lire et d'écrire à nouveau sur le lecteur.

Je ne sais pas si j'ai eu de la chance cette fois ou pas. Mais ça marche à nouveau.