MCPcopy
hub / github.com/opengeos/segment-geospatial / ParaDistance

Function ParaDistance

samgeo/fer.py:628–682  ·  view source on GitHub ↗
(v1, v2, vx, lengthDiff, area, lengthdiff2)

Source from the content-addressed store, hash-verified

626
627
628def ParaDistance(v1, v2, vx, lengthDiff, area, lengthdiff2):
629 x = (v1.x2 + v2.x1) / 2
630 y = (v1.y2 + v2.y1) / 2
631
632 if v1.x1 == v1.x2:
633 k1 = 0
634 k2 = 0
635 b1 = y - k1 * x
636 b2 = y - k2 * x
637 yn = k1 * (x + 1) + b1
638 vn1 = Vector(x + 1, yn, x, y, 0)
639 yn1 = k2 * (x + 1) + b2
640 vn2 = Vector(x, y, x + 1, yn1, 1)
641 else:
642 if v1.k() != 0:
643 k1 = -1 / v1.k()
644 k2 = k1
645 b1 = y - k1 * x
646 b2 = y - k2 * x
647 yn = k1 * (x + 1) + b1
648 vn1 = Vector(x + 1, yn, x, y, 0)
649 yn1 = k2 * (x + 1) + b2
650 vn2 = Vector(x, y, x + 1, yn1, 1)
651
652 if v1.k() == 0:
653 vn1 = Vector(x, v1.y1, x, y, 0)
654 vn2 = Vector(x, y, x, v2.y1, 1)
655
656 x1, y1 = IntersectPt(v1, vn1, vx)
657 d1 = ((x - x1) ** 2 + (y - y1) ** 2) ** 0.5
658 x2, y2 = IntersectPt(v2, vn2, vx)
659 d2 = ((x - x2) ** 2 + (y - y2) ** 2) ** 0.5
660
661 vp1 = Vector(v1.x2, v1.y2, x1, y1, 0)
662 vp2 = Vector(v2.x1, v2.y1, x2, y2, 0)
663 v12 = Vector(v1.x2, v1.y2, v2.x1, v2.y1, 0)
664
665 if (vp1.length() == 0 or vp2.length() == 0) and d1 + d2 > lengthDiff:
666 return 0, 0, 0, 0, -1
667
668 if d1 + d2 <= lengthDiff or v12.length() < lengthDiff / 1.5:
669 if (
670 area >= 100 and v1.length() < lengthdiff2 and v2.length() < lengthdiff2
671 ) or area < 100:
672 return 0, 0, 0, 0, 0
673 else:
674 return 0, 0, 0, 0, 3
675
676 if d1 + d2 > lengthDiff:
677 if (
678 area >= 200 and v1.length() < lengthdiff2 and v2.length() < lengthdiff2
679 ) or area < 200:
680 return x1, y1, x2, y2, 1
681 else:
682 return 0, 0, 0, 0, -1
683
684
685def LocalResc(vList, vx, angleDiff, lengthdiff1, lengthdiff2, area):

Callers 1

LocalRescFunction · 0.85

Calls 4

lengthMethod · 0.95
VectorClass · 0.85
IntersectPtFunction · 0.85
kMethod · 0.80

Tested by

no test coverage detected