Dessiner des symboles de point de vue dans QGIS?


9

J'ai fait un symbole de point de vue dans QGIS en stylisant un point pour qu'il soit un cercle et en ajoutant quelques lignes qui tournent à différents angles, et ça a fini comme ça

Point de vue 360

Dans un monde parfait, je préférerais que ce symbole soit un style polygone (plutôt qu'un style point), il aurait donc la taille correcte à n'importe quel zoom (sans créer de symboles dépendant du zoom).

Mon problème est que je voudrais un demi-cercle, comme ceci:

demi-point de vue

et un cercle plus que la moitié moins que plein comme ceci:

point de vue étrange

Des suggestions sur la façon de créer un style comme celui-ci dans QGIS?


3
vous pouvez créer une icône svg et l'ajouter, faire pivoter etc! est seulement une suggestion
Fran Raga

2
Recherchez une réponse sur le générateur de géométrie qui pourrait vous donner une idée. celui-ci gis.stackexchange.com/questions/229961/… par exemple pourrait vous mettre sur la bonne voie
JR

comment le nombre de segments et la position des segments manquants sont-ils définis?
geozelot

Le nombre de segments est arbitraire. Il suffit de regarder quelque chose comme ces exemples. Et je ne sais pas comment je pourrais définir les éléments manquants. Peut-être dessiner un cercle et lui donner une valeur "être un cercle de 270 degrés" ou "être un cercle complet sauf 30 degrés, tourner de 50 degrés"
Fredrik

2
Avez-vous essayé de créer des tampons de coin. tampons compensés qgis docs
Amanti

Réponses:


4

Encore une autre approche SVG:

Enregistrez les textes ci-dessous en tant que fichier texte SVG (disons petal.svg) dans votre dossier SVG.

<?xml version="1.0" encoding="UTF-8"?>
<svg id="petal" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 a100,100 0 0,1 38.26834323,7.61205 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>
</svg>

Il affichera un seul pétale (angle central ~ 22,5 degrés) lorsqu'il sera chargé sur QGIS comme marqueur SVG. L'angle de rotation commence à zéro et augmente dans le sens horaire. Veuillez modifier les couleurs de remplissage et de contour selon vos besoins.

entrez la description de l'image ici

Pour votre utilisation, vous devrez peut-être avoir deux pétales (45 degrés), trois pétales (67,5 degrés), etc. Veuillez me faire savoir si vous avez besoin de ces variations .


EDIT (ajout de cas pour deux, trois et quatre pétales)

Deux pétales:

<?xml version="1.0" encoding="UTF-8"?>
<svg id="2 petals" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 A100,100 0 0,1 188.26834,57.61205 L150,150 L188.26834,57.61205 A100,100 0 0,1 220.7107,79.28932 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>     
</svg>

Trois pétales:

<?xml version="1.0" encoding="UTF-8"?>
<svg id="3 petals" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 A100,100 0 0,1 188.26834,57.61205 L150,150 L188.26834,57.61205 A100,100 0 0,1 220.7107,79.28932 L150,150 L220.7107,79.28932 A100,100 0 0,1 242.388,111.7317 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>     
</svg>

Quatre pétales:

<?xml version="1.0" encoding="UTF-8"?>
<svg id="4 petals" enable-background="new 0 0 300 300" version="1.1" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
  <path d="M150,150 v-100 A100,100 0 0,1 188.26834,57.61205 L150,150 L188.26834,57.61205 A100,100 0 0,1 220.7107,79.28932 L150,150 L220.7107,79.28932 A100,100 0 0,1 242.388,111.7317 L150,150 L242.388,111.7317  A100,100 0 0,1 250,150 z"
        fill="param(fill)" fill-opacity="param(fill-opacity)" stroke="param(outline)" stroke-opacity="param(outline-opacity)" stroke-width="param(outline-width) 0.2"/>     
</svg>

Ou, l'ajout de couches de marqueurs SVG peut être une option ... mais c'est en grande partie un travail manuel et déconseillé.

entrez la description de l'image ici


Une autre option - Plugin Shape Tools

Si vous n'avez pas besoin de "rayons", je recommanderais le plugin Shape Tools . Contrairement Wedge buffersà QGIS3, vous pouvez définir startet endazimuter directement à partir de vos champs d'attribut. Cela rend les choses beaucoup plus faciles et plus rapides.

entrez la description de l'image ici


Tout simplement génial!
Taras

0

Vous l'avez presque compris. Essayez ces étapes:

  1. Ouvrez votre PNG avec inkscape et enregistrez-le au format SVG (avion) ​​dans un dossier (il est possible que les symboles SVG par défaut soient modifiés dans QGIS).
  2. Dans QGIS, accédez à Système -> Options -> Système. Ajoutez ensuite votre chemin de dossier aux chemins SVG. Fermez QGIS et rouvrez-le juste pour être sûr que ce nouveau chemin de dossier va être chargé.
  3. Accédez aux propriétés du calque et recherchez vos nouveaux symboles. Je viens d'essayer le vôtre et cela a fonctionné.

entrez la description de l'image ici


Dans le cas où vous devez changer la taille du symbole automatiquement, contournez ces options: gis.stackexchange.com/questions/113513/…
César Arquero
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.