Comments (3)
@FERRATON j'ai essayé le point central de ligne, mais cela engendre des effets très étranges si la ligne est bien plus grande que l'écran, avec un connecteur qui travers l'écran pour aller chercher ce point central. J'ai remplacé cela par le point le plus proche, et cela me semble moins piégeux:
n'hésite pas à réouvrir si cela ne convient pas
from labelconnector.
Je rouvre, le style "break aligned" est devenu extrèmement inefficient pour les polygones avec cette solution
Pour rappel, l'expression est monstrueuse. On ne peut pas passer simplement sur une fonction python plus efficiente sans nuire à la portabilité des projets:
/* Generated by LabelConnector plugin */
/*
alias_en="Break aligned"
alias_fr="Lignes brisées régulières"
*/
geomfromwkt(
-- start 01 upper left quadrant - more vertical move
if(
"auxiliary_storage_labeling_positionx" < x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" > y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and ( abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) < abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) - abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) )) +' ' --middleX
+ to_string("auxiliary_storage_labeling_positiony") + ' ,' --middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
, -- start 02 upper left quadrant - more horizontal move
if(
"auxiliary_storage_labeling_positionx" < x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" > y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) >= abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' ' --middleX
+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) + abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) )) + ' ,' --middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
,
-- start 03 lower left case 1
if(
"auxiliary_storage_labeling_positionx" < x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" <= y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) < abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) - abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) )) +' ' --middleX
+ to_string( "auxiliary_storage_labeling_positiony") + ' ,' --middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
,
-- start 04 lower left case 2
if( "auxiliary_storage_labeling_positionx" < x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" <= y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) >= abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' ' --middleX
+ to_string( y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) - abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) )) + ' ,'--middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
,
-- start 05 Upper right case 1
if( "auxiliary_storage_labeling_positionx" >= x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" > y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) >= abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' ' --middleX
+ to_string( "auxiliary_storage_labeling_positiony" - abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) )) + ' ,'--middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
,
-- start 06 Upper right case 2
if( "auxiliary_storage_labeling_positionx" >= x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" > y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) < abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) + abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) )) +' ' --middleX
+ to_string("auxiliary_storage_labeling_positiony") + ' ,' --middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
,
-- start 07 Lower right case 1
if( "auxiliary_storage_labeling_positionx" >= x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" <= y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) >= abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' ' --middleX
+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) - abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) )) + ' ,' --middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
,
-- start 08 Lower right case 2
if( "auxiliary_storage_labeling_positionx" >= x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and "auxiliary_storage_labeling_positiony" <= y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) and abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) < abs("auxiliary_storage_labeling_positionx" - x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ,
'LINESTRING('+ to_string(x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) +' '+ to_string(y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) ))) + ' , '
+ to_string( x(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) + abs("auxiliary_storage_labeling_positiony" - y(if( layer_property( @layer_name, 'geometry_type' ) = 'Line', closest_point( $geometry, make_point("auxiliary_storage_labeling_positionx" , "auxiliary_storage_labeling_positiony") ), centroid($geometry) )) ) ) + ' ' --middleX
+ to_string("auxiliary_storage_labeling_positiony") + ' ,' --middleY
+ to_string("auxiliary_storage_labeling_positionx") + ' '
+ to_string("auxiliary_storage_labeling_positiony")+ ')'
,
'ELSE'
) -- end 08
) -- end 07
) -- end 06
) -- end 05
) -- end 04
) -- end 03
) -- end 02
)
)
/* End of generated expression */
from labelconnector.
En fait non, c'est la version de développement d'aujourd'hui qui a des soucis de rendu, je referme
from labelconnector.
Related Issues (20)
- Calling twice LabeConnector shoudn't end in two overlaid connectors HOT 3
- If polygons are filled, label connectors are randomly drawn below or underneath them HOT 2
- break styles improvement discussion HOT 4
- Some layers require a signal in label properties to display labels HOT 2
- Unclear (to me) on how to make this work HOT 3
- Remplacement des contenus d'étiquettes par l'identifiant après activation HOT 4
- Move labels doesn't work with GPKG HOT 11
- marge entre le trait de rappel et l'étiquette HOT 6
- Changer le style de connecteur plus simplement HOT 4
- Callouts lines can be drawn underneath features HOT 2
- Icônes surchargées dans la légende avec une analyse graduée HOT 3
- version FR vs version US HOT 5
- Label settings not applied correctly when source layer is not labeled HOT 1
- Les liens vers les illustrations PNG dans l'aide sont morts (erreur 404). HOT 1
- Plugin overrides ruled based labeling HOT 2
- pb avec ajout a posteriori d'une règle n'affichant pas des étiquettes déplacées HOT 2
- Labels for overlapping points not displayed correctly.
- Better Icon for plugin
- Label styles should have aliases
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from labelconnector.