მეტი

რა არის OGRGeometryShadow და რატომ არ შემიძლია მისი გამოყენება Intersects ()-მეთოდში?

რა არის OGRGeometryShadow და რატომ არ შემიძლია მისი გამოყენება Intersects ()-მეთოდში?


მე ვცდილობ დავწერო რაღაც Python– ით და GDAL/OGR– ით და Shapely– ით.

რაც მაქვს:

  • ორი LineString გეომეტრია: "geom1" და "geom2"
  • მე გავაკეთე კვეთა: "კვეთა = geom1. კვეთა (geom2)"

ახლა მინდოდა გადამემოწმებინა, არის თუ არა კვეთა-წერტილი ერთ – ერთი შესასვლელი გეომეტრიის საწყისი ან დამთავრებული წერტილი (ან ორივედან არცერთი).

Რა გავაკეთე:

საწყისი shapely.geometry იმპორტი Point point_start_1 = წერტილი (geom1.GetPoint_2D (0)) point_end_1 = წერტილი (geom1.GetPoint_2D (geom1.GetPointCount ()-1)) point_start_2 = წერტილი (geom2.GetPoint_2D (0)) point_end_2 = წერტილი (geom2 .GetPoint_2D (geom2.GetPointCount ()-1))

შემდეგი კოდი არ იმუშავებს:

თუ კვეთა. კვეთს (წერტილი_სტარტი_1): დაბეჭდე "geom1– ის კვეთა და საწყისი წერტილი არის ერთი და იგივე წერტილი"

შეცდომის შეტყობინება არის:

"TypeError: მეთოდში" Geometry_Intersects ", არგუმენტი 2 ტიპის" OGRGeometryShadow *"

ჩემი შეკითხვაა:

რა არის OGRGeometryShadow და რატომ არ შემიძლია მისი გადაკვეთა სხვა გეომეტრიასთან? როდესაც მე ვბეჭდავ start_point_1- ს, ნათქვამია: "POINT (6.331836999999999 53.6154012)" ასე რომ, ის ჩვეულებრივ გეომეტრიას ჰგავს. მაგრამ როგორც ვთქვი "კვეთს"-მეთოდი არ მუშაობს.


თქვენს ხსნარში თქვენ აურიეთ ogr და shapely- ის გეომეტრიები და პრედიკატები

მხოლოდ ფორმალურად (კვეთა (), კვეთს ())

shapely.geometry იმპორტის წერტილიდან, LineString, mapping geom1 = LineString ([(0, 0), (0, 1)]) geom2 = LineString ([(1, 1), (-1, -1)]] კვეთა = geom1.intersection (geom2) # geo_interface -> GeoJSON რუქა (კვეთა) {'type': 'წერტილი', 'კოორდინატები': (0.0, 0.0)} # სწორი გეომეტრია pt1 = [წერტილი (pt) pt სიაში (geom1 .coords)] point_start_1 = pt1 [0]… # მკაფიოდ ჩამოყალიბებული პრედიკატური კვეთა. კვეთს (point_start_1) მართალია

მხოლოდ ოგრით (კვეთა (), კვეთს ()):

osgeo იმპორტიდან ogr geom1 = ogr.CreateGeometryFromWkt ('LINESTRING (0 0, 0 1)') geom2 = ogr.CreateGeometryFromWkt ('LINESTRING (1 1, -1 -1)') # კვეთა ogr კვეთა_ოგრ = geom1. გადაკვეთა ( geom2) # geo_interface -> GeoJSON intersection_ogr.ExportToJson () '{"type": "წერტილი", "კოორდინატები": [0.0, 0.0]}' # ogr geometry point_start_1 = ogr.Geometry (ogr.wkbPoint) point_start_1.AddPoint (1. geom1.GetPoint_2D (0) [0], geom1.GetPoint_2D (0) [1])… # ogr პრედიკატური კვეთა_ოგრი. კვეთს (წერტილი_დაწყ ._1) მართალია

თქვენს გადაწყვეტაში თქვენ იყენებთ Shapeely გეომეტრიას:

point_start_1 = წერტილი (geom_ogr1.GetPoint_2D (0))…

ogr -> შეცდომის ორობითი პრედიკატით

intersection_ogr. კვეთს (point_start_1) TypeError: მეთოდში "Geometry_Equal", არგუმენტი 2 ტიპის "OGRGeometryShadow *"