本文整理汇总了Python中sympy.geometry.Polygon.intersection方法的典型用法代码示例。如果您正苦于以下问题:Python Polygon.intersection方法的具体用法?Python Polygon.intersection怎么用?Python Polygon.intersection使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sympy.geometry.Polygon
的用法示例。
在下文中一共展示了Polygon.intersection方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_intersection
# 需要导入模块: from sympy.geometry import Polygon [as 别名]
# 或者: from sympy.geometry.Polygon import intersection [as 别名]
def test_intersection():
poly1 = Triangle(Point(0, 0), Point(1, 0), Point(0, 1))
poly2 = Polygon(Point(0, 1), Point(-5, 0),
Point(0, -4), Point(0, S(1)/5),
Point(S(1)/2, -0.1), Point(1,0), Point(0, 1))
assert poly1.intersection(poly2) == [Point2D(S(1)/3, 0),
Segment(Point(0, S(1)/5), Point(0, 0)),
Segment(Point(1, 0), Point(0, 1))]
assert poly2.intersection(poly1) == [Point(S(1)/3, 0),
Segment(Point(0, 0), Point(0, S(1)/5)),
Segment(Point(1, 0), Point(0, 1))]
assert poly1.intersection(Point(0, 0)) == [Point(0, 0)]
assert poly1.intersection(Point(-12, -43)) == []
assert poly2.intersection(Line((-12, 0), (12, 0))) == [Point(-5, 0),
Point(0, 0),Point(S(1)/3, 0), Point(1, 0)]
assert poly2.intersection(Line((-12, 12), (12, 12))) == []
assert poly2.intersection(Ray((-3,4), (1,0))) == [Segment(Point(1, 0),
Point(0, 1))]
assert poly2.intersection(Circle((0, -1), 1)) == [Point(0, -2),
Point(0, 0)]
assert poly1.intersection(poly1) == [Segment(Point(0, 0), Point(1, 0)),
Segment(Point(0, 1), Point(0, 0)), Segment(Point(1, 0), Point(0, 1))]
assert poly2.intersection(poly2) == [Segment(Point(-5, 0), Point(0, -4)),
Segment(Point(0, -4), Point(0, S(1)/5)),
Segment(Point(0, S(1)/5), Point(S(1)/2, -S(1)/10)),
Segment(Point(0, 1), Point(-5, 0)),
Segment(Point(S(1)/2, -S(1)/10), Point(1, 0)),
Segment(Point(1, 0), Point(0, 1))]
assert poly2.intersection(Triangle(Point(0, 1), Point(1, 0), Point(-1, 1))) \
== [Point(-S(5)/7, S(6)/7), Segment(Point2D(0, 1), Point(1, 0))]
assert poly1.intersection(RegularPolygon((-12, -15), 3, 3)) == []
示例2: test_polygon
# 需要导入模块: from sympy.geometry import Polygon [as 别名]
# 或者: from sympy.geometry.Polygon import intersection [as 别名]
def test_polygon():
a, b, c = Point(0, 0), Point(2, 0), Point(3, 3)
t = Triangle(a, b, c)
assert Polygon(a, Point(1, 0), b, c) == t
assert Polygon(Point(1, 0), b, c, a) == t
assert Polygon(b, c, a, Point(1, 0)) == t
# 2 "remove folded" tests
assert Polygon(a, Point(3, 0), b, c) == t
assert Polygon(a, b, Point(3, -1), b, c) == t
raises(GeometryError, lambda: Polygon((0, 0), (1, 0), (0, 1), (1, 1)))
# remove multiple collinear points
assert Polygon(Point(-4, 15), Point(-11, 15), Point(-15, 15),
Point(-15, 33/5), Point(-15, -87/10), Point(-15, -15),
Point(-42/5, -15), Point(-2, -15), Point(7, -15), Point(15, -15),
Point(15, -3), Point(15, 10), Point(15, 15)) == \
Polygon(Point(-15,-15), Point(15,-15), Point(15,15), Point(-15,15))
p1 = Polygon(
Point(0, 0), Point(3, -1),
Point(6, 0), Point(4, 5),
Point(2, 3), Point(0, 3))
p2 = Polygon(
Point(6, 0), Point(3, -1),
Point(0, 0), Point(0, 3),
Point(2, 3), Point(4, 5))
p3 = Polygon(
Point(0, 0), Point(3, 0),
Point(5, 2), Point(4, 4))
p4 = Polygon(
Point(0, 0), Point(4, 4),
Point(5, 2), Point(3, 0))
p5 = Polygon(
Point(0, 0), Point(4, 4),
Point(0, 4))
p6 = Polygon(
Point(-11, 1), Point(-9, 6.6),
Point(-4, -3), Point(-8.4, -8.7))
r = Ray(Point(-9,6.6), Point(-9,5.5))
#
# General polygon
#
assert p1 == p2
assert len(p1.args) == 6
assert len(p1.sides) == 6
assert p1.perimeter == 5 + 2*sqrt(10) + sqrt(29) + sqrt(8)
assert p1.area == 22
assert not p1.is_convex()
# ensure convex for both CW and CCW point specification
assert p3.is_convex()
assert p4.is_convex()
dict5 = p5.angles
assert dict5[Point(0, 0)] == pi / 4
assert dict5[Point(0, 4)] == pi / 2
assert p5.encloses_point(Point(x, y)) is None
assert p5.encloses_point(Point(1, 3))
assert p5.encloses_point(Point(0, 0)) is False
assert p5.encloses_point(Point(4, 0)) is False
p5.plot_interval('x') == [x, 0, 1]
assert p5.distance(
Polygon(Point(10, 10), Point(14, 14), Point(10, 14))) == 6 * sqrt(2)
assert p5.distance(
Polygon(Point(1, 8), Point(5, 8), Point(8, 12), Point(1, 12))) == 4
warnings.filterwarnings(
"error", message="Polygons may intersect producing erroneous output")
raises(UserWarning,
lambda: Polygon(Point(0, 0), Point(1, 0),
Point(1, 1)).distance(
Polygon(Point(0, 0), Point(0, 1), Point(1, 1))))
warnings.filterwarnings(
"ignore", message="Polygons may intersect producing erroneous output")
assert hash(p5) == hash(Polygon(Point(0, 0), Point(4, 4), Point(0, 4)))
assert p5 == Polygon(Point(4, 4), Point(0, 4), Point(0, 0))
assert Polygon(Point(4, 4), Point(0, 4), Point(0, 0)) in p5
assert p5 != Point(0, 4)
assert Point(0, 1) in p5
assert p5.arbitrary_point('t').subs(Symbol('t', real=True), 0) == \
Point(0, 0)
raises(ValueError, lambda: Polygon(
Point(x, 0), Point(0, y), Point(x, y)).arbitrary_point('x'))
assert p6.intersection(r) == [Point(-9, 33/5), Point(-9, -84/13)]
#
# Regular polygon
#
p1 = RegularPolygon(Point(0, 0), 10, 5)
p2 = RegularPolygon(Point(0, 0), 5, 5)
raises(GeometryError, lambda: RegularPolygon(Point(0, 0), Point(0,
1), Point(1, 1)))
raises(GeometryError, lambda: RegularPolygon(Point(0, 0), 1, 2))
raises(ValueError, lambda: RegularPolygon(Point(0, 0), 1, 2.5))
assert p1 != p2
assert p1.interior_angle == 3*pi/5
assert p1.exterior_angle == 2*pi/5
assert p2.apothem == 5*cos(pi/5)
assert p2.circumcenter == p1.circumcenter == Point(0, 0)
assert p1.circumradius == p1.radius == 10
assert p2.circumcircle == Circle(Point(0, 0), 5)
assert p2.incircle == Circle(Point(0, 0), p2.apothem)
assert p2.inradius == p2.apothem == (5 * (1 + sqrt(5)) / 4)
#.........这里部分代码省略.........
示例3: download_idaho_tiles_by_bbox
# 需要导入模块: from sympy.geometry import Polygon [as 别名]
# 或者: from sympy.geometry.Polygon import intersection [as 别名]
def download_idaho_tiles_by_bbox(self, catId, bbox, resolution, outputfolder):
'''Retrieve and view just the IDAHO chips in a particular bounding box
for a catID.
Args:
catid (str): The source catalog ID from the platform catalog.
bbox (list): List of coords: minx(W), miny(S), maxx(E), maxy(N).
resolution (str): The desired floating point resolution of the tiles.
outputfolder (str): The desired output location of the IDAHO tiles.
'''
minx, miny, maxx, maxy = bbox
#validate bbox values
if (minx > maxx):
print ('The west value is not less than the east value.')
exit
if (miny > maxy):
print ('The south value is not less than the north value.')
exit
#create bbox polygon
bp1 = Point(minx, miny)
bp2 = Point(minx, maxy)
bp3 = Point(maxx, maxy)
bp4 = Point(maxx, miny)
bbox_polygon = Polygon(bp1, bp2, bp3, bp4)
#get IDAHO image results: parts
idaho_image_results = self.get_images_by_catid(catId)
description = self.describe_images(idaho_image_results)
tile_count = 0
for catid, images in description.items():
for partnum, part in images['parts'].items():
num_images = len(list(part.keys()))
partname = None
if num_images == 1:
# there is only one image, use the PAN
partname = [p for p in list(part.keys()) if p.upper() == 'PAN'][0]
elif num_images == 2:
# there are two images in this part, use the multi (or pansharpen)
partname = [p for p in list(part.keys()) if p is not 'PAN'][0]
if not partname:
print("Cannot find part for idaho image.")
continue
part_boundstr_wkt = part[partname]['boundstr']
part_polygon = geometry.from_wkt(part_boundstr_wkt)
bucketname = part[partname]['bucket']
image_id = part[partname]['id']
W, S, E, N = part_polygon.bounds
pp1, pp2, pp3, pp4 = Point(W, S), Point(W, N), Point(E, N), Point(E, S)
part_bbox_polygon = Polygon(pp1, pp2, pp3, pp4)
if (bbox_polygon.intersection(part_bbox_polygon)):
center_lat = (S + old_div((N-S),2))
center_lon = (W + old_div((E-W),2))
print(center_lat, center_lon)
self.get_idaho_chip(bucket_name=bucketname,
idaho_id=image_id,
center_lat=str(center_lat),
center_lon=str(center_lon),
resolution=resolution,
output_folder=outputfolder)
tile_count+=1
print ('There were ' + str(tile_count) + ' IDAHO images downloaded that ' +
'intersect with the provided bounding box.')
示例4: view_idaho_tiles_by_bbox
# 需要导入模块: from sympy.geometry import Polygon [as 别名]
# 或者: from sympy.geometry.Polygon import intersection [as 别名]
def view_idaho_tiles_by_bbox(self, catId, bbox, output_filename):
'''Retrieve and view just the IDAHO chips in a particular bounding box
for a catID.
Args:
catid (str): The source catalog ID from the platform catalog.
bbox (list): List of coords: minx(W), miny(S), maxx(E), maxy(N).
output_filename (str): a Leaflet Viewer file showing the IDAHO
images as tiles.
'''
minx, miny, maxx, maxy = bbox
#validate bbox values
if (minx > maxx):
print ('The west value is not less than the east value.')
exit
if (miny > maxy):
print ('The south value is not less than the north value.')
exit
#create bbox polygon
bp1 = Point(minx, miny)
bp2 = Point(minx, maxy)
bp3 = Point(maxx, maxy)
bp4 = Point(maxx, miny)
bbox_polygon = Polygon(bp1, bp2, bp3, bp4)
#get IDAHO image results: parts
idaho_image_results = self.get_images_by_catid(catId)
description = self.describe_images(idaho_image_results)
tile_count = 0
for catid, images in description.items():
functionstring = ''
for partnum, part in images['parts'].items():
num_images = len(list(part.keys()))
partname = None
if num_images == 1:
# there is only one image, use the PAN
partname = [p for p in list(part.keys()) if p.upper() == 'PAN'][0]
pan_image_id = ''
elif num_images == 2:
# there are two images in this part, use the multi (or pansharpen)
partname = [p for p in list(part.keys()) if p is not 'PAN'][0]
pan_image_id = part['PAN']['id']
if not partname:
print("Cannot find part for idaho image.")
continue
bandstr = {
'RGBN': '0,1,2',
'WORLDVIEW_8_BAND': '4,2,1',
'PAN': '0'
}.get(partname, '0,1,2')
part_boundstr_wkt = part[partname]['boundstr']
part_polygon = geometry.from_wkt(part_boundstr_wkt)
bucketname = part[partname]['bucket']
image_id = part[partname]['id']
W, S, E, N = part_polygon.bounds
pp1, pp2, pp3, pp4 = Point(W, S), Point(W, N), Point(E, N), Point(E, S)
part_bbox_polygon = Polygon(pp1, pp2, pp3, pp4)
if (bbox_polygon.intersection(part_bbox_polygon)):
functionstring += ("addLayerToMap('%s','%s',%s,%s,%s,%s,'%s');\n" %
(bucketname, image_id, W,S,E,N, pan_image_id))
tile_count += 1
print ('There were ' + str(tile_count) + ' IDAHO images found to ' +
'intersect with the provided bounding box.')
__location__ = os.path.realpath(
os.path.join(os.getcwd(), os.path.dirname(os.path.realpath('__file__'))))
with open(os.path.join(__location__, 'leafletmap_template.html'), 'r') as htmlfile:
data=htmlfile.read().decode("utf8")
data = data.replace('FUNCTIONSTRING',functionstring)
data = data.replace('CENTERLAT',str(S + old_div((N-S),2)))
data = data.replace('CENTERLON',str(W + old_div((E-W),2)))
data = data.replace('BANDS',bandstr)
data = data.replace('TOKEN',self.gbdx_connection.access_token)
with codecs.open(output_filename,'w','utf8') as outputfile:
print("Saving %s" % output_filename)
outputfile.write(data)