Don't miss your chance to take the Fabric Data Engineer (DP-700) exam on us!
Learn moreWe've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now
Hi Community
I'm trying to figure out if this is even possible in DAX = calculating the area and perimeter of polygons in DAX .
Eventually I would love to see if one can calculate a long axis and minor axis of a polygon, but area and perimeter would be a major win.
Here is my test data set:
PolygonOrderX Y
| Armada | 0 | 1133.867302 | 9377.688859 | |
| Armada | 1 | 1133.885225 | 9377.708789 | |
| Armada | 2 | 1133.911246 | 9377.708524 | |
| Armada | 3 | 1133.931606 | 9377.731125 | |
| Armada | 4 | 1133.959339 | 9377.716192 | |
| Armada | 5 | 1133.957758 | 9377.703479 | |
| Armada | 6 | 1133.932689 | 9377.703266 | |
| Armada | 7 | 1133.924513 | 9377.694315 | |
| Armada | 8 | 1133.89474 | 9377.690248 | |
| Armada | 9 | 1133.886501 | 9377.681242 | |
| Armada | 10 | 1133.867302 | 9377.688859 | |
| Barbaras | 0 | 1133.940272 | 9377.685785 | |
| Barbaras | 1 | 1133.924513 | 9377.694315 | |
| Barbaras | 2 | 1133.89474 | 9377.690248 | |
| Barbaras | 3 | 1133.886501 | 9377.681242 | |
| Barbaras | 4 | 1133.898729 | 9377.674412 | |
| Barbaras | 5 | 1133.909019 | 9377.674985 | |
| Barbaras | 6 | 1133.940272 | 9377.685785 | |
| Coconuss | 0 | 1133.956245 | 9377.691305 | |
| Coconuss | 1 | 1133.940272 | 9377.685785 | |
| Coconuss | 2 | 1133.924513 | 9377.694315 | |
| Coconuss | 3 | 1133.932689 | 9377.703266 | |
| Coconuss | 4 | 1133.957758 | 9377.703479 | |
| Coconuss | 5 | 1133.956245 | 9377.691305 | |
| Descripta | 0 | 1133.867302 | 9377.688859 | |
| Descripta | 1 | 1133.842369 | 9377.696331 | |
| Descripta | 2 | 1133.869321 | 9377.753337 | |
| Descripta | 3 | 1133.911591 | 9377.742598 | |
| Descripta | 4 | 1133.922642 | 9377.73665 | |
| Descripta | 5 | 1133.931606 | 9377.731125 | |
| Descripta | 6 | 1133.911246 | 9377.708524 | |
| Descripta | 7 | 1133.885225 | 9377.708789 | |
| Descripta | 8 | 1133.867302 | 9377.688859 | |
| Eliptica | 0 | 1133.955761 | 9378.00986 | |
| Eliptica | 1 | 1133.953292 | 9377.997504 | |
| Eliptica | 2 | 1133.932773 | 9377.974711 | |
| Eliptica | 3 | 1133.921109 | 9377.981121 | |
| Eliptica | 4 | 1133.933362 | 9377.994733 | |
| Eliptica | 5 | 1133.931604 | 9378.002572 | |
| Eliptica | 6 | 1133.94595 | 9378.018399 | |
| Eliptica | 7 | 1133.955761 | 9378.00986 |
(Order is the vertice number and needs to be in that order)
Or if this is not possible directly in DAX, whether anyone has the skills in doing this in Python during data load in PQ. I'm thinking shapely ? I've tested the below code and it gives the same (very close at least) to what I get from my 3D modelling package
from shapely.geometry import Polygon
coords = ((-1, 0), (-1, 1), (0, 0.5), (1, 1), (1, 0), (-1, 0))
polygon = Polygon(coords)
polygon.length
And then using polygon.length and polygon.area to give area and perimeter, but I'm not sure how to get this to run through the complete table of polygons and export the list on unique polygons with their respective areas and perimeters through Power Query.
thanks heaps in advance for any pointers
Cheers
Manfred
Hi @mwimberger ,
Sorry for that we just can calculate the length of each point and get the perimeter of polygon.
You can refer the following steps.
1. We need to create two calculate columns to get the next row value.
x1 = CALCULATE(SUM('Table'[x]),FILTER('Table','Table'[Polygon]=EARLIER('Table'[Polygon]) && 'Table'[Order]=EARLIER('Table'[Order])+1))y1 = CALCULATE(SUM('Table'[y]),FILTER('Table','Table'[Polygon]=EARLIER('Table'[Polygon]) && 'Table'[Order]=EARLIER('Table'[Order])+1))
2. Then we can create a new column to get the length of each line.
Length =
var x = POWER([x1]-[x],2)
var y = POWER([y1]-[y],2)
var z = SQRT(x+y)
return
IF(ISBLANK([Column]),BLANK(), z)
Column and Column 2 are the auxiliary column.
3. At last we can create a table visual, put the polygon name and length in it to get the result like this,
If it doesn’t meet your requirement, could you please show the exact expected result based on the table that you have shared?
Or if you have other better solutions, please share them for more people to see and let us learn from each other.
BTW, pbix as attached.
Best regards,
Community Support Team _ zhenbw
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.
| User | Count |
|---|---|
| 51 | |
| 37 | |
| 35 | |
| 19 | |
| 17 |
| User | Count |
|---|---|
| 72 | |
| 70 | |
| 39 | |
| 34 | |
| 23 |