Ceci est possible en utilisant un 'générateur de géométrie' différent de celui que vous vouliez initialement, je suppose, vous pouvez éviter d'avoir à générer la couche de ligne de toutes les connexions en utilisant une couche virtuelle:
Des points:
Ajoutez une couche virtuelle en utilisant le SQL suivant - le JOIN fait correspondre chaque point à chaque autre, et la géométrie de la ligne est générée à l'aide de la fonction Spatialite MakeLine :
SELECT s.id 'ID1', c.id 'ID2' , MakeLine(s.geometry,c.geometry) 'geometry'
FROM SamplePoints AS s JOIN SamplePoints AS c
WHERE s.id <> c.id
Le résultat:
Cette table virtuelle pourrait ensuite être filtrée dynamiquement à l'aide de la fonctionnalité Atlas.
La génération dynamique de lignes courbes serait plus délicate, mais devrait toujours être possible. Les courber d'une manière cartographique appropriée (compte tenu de la distribution des autres lignes) est probablement au-delà de ce qui peut être réalisé avec des couches virtuelles.
Mise à jour:
Avec un peu de bricolage et beaucoup de référence à la liste des fonctions Spatialite, j'ai généré des lignes courbes:
La couche SQL virtuelle pour cela est ci-dessous. Notez que toutes les permutations sont affichées, et inverser l'ordre de l'emplacement de début et de fin génère la courbe complémentaire.
SELECT s.id 'ID1', c.id 'ID2' ,
MakeArc(
X(Project(MakePoint((X(s.geometry)+X(c.geometry))/2,(Y(s.geometry)+Y(c.geometry))/2),distance(s.geometry,c.geometry),Azimuth(s.geometry,c.geometry) - PI()/2)),
Y(Project(MakePoint((X(s.geometry)+X(c.geometry))/2,(Y(s.geometry)+Y(c.geometry))/2),distance(s.geometry,c.geometry),Azimuth(s.geometry,c.geometry) - PI()/2)),
distance(s.geometry,c.geometry) * 1.1180339887,
90 - azimuth(Project(MakePoint((X(s.geometry)+X(c.geometry))/2,(Y(s.geometry)+Y(c.geometry))/2),distance(s.geometry,c.geometry),Azimuth(s.geometry,c.geometry) - PI()/2),s.geometry) * (180/PI()),
90 - azimuth(Project(MakePoint((X(s.geometry)+X(c.geometry))/2,(Y(s.geometry)+Y(c.geometry))/2),distance(s.geometry,c.geometry),Azimuth(s.geometry,c.geometry) - PI()/2),c.geometry) * (180/PI()),
27700,
2) 'geom' /*line:27700*/
FROM SamplePoints AS s JOIN SamplePoints AS c
WHERE s.id <> c.id