用alphashape计算凹面船体时,我可以修复单个矩阵警告?

问题描述 投票:0回答:1
实际警告是“警告:root:单数矩阵。可能是由N-1空间中的所有点引起的”。这对我来说是一个惊喜,因为我的观点清楚地填充了一个2D区域而不是共线,如QGIS的此屏幕截图所示:

湖原始点 我试图删除重复的点,因为我读到可能会引起警告,但问题仍然存在。我的目标是产生一个不像严格遵循我观点的锯齿形模式的凹形船体,而是要描述虚构边界的外部凹陷。

这是我的代码:

# Read CSV Data print("Parsing .csv file...", end=" ", flush=True) filepath = f'output/{argv[1]}' with open(filepath, "r") as archive: data = list(csv.reader(archive, delimiter=","))[1:] # Skip header lat = [] lon = [] z = [] for entry in data: lat.append(float(entry[9])) # Keep raw latitude lon.append(float(entry[10])) # Keep raw longitude z.append(float(entry[1]) / 1000) # Convert depth to meters df = pd.DataFrame({'lon': lon, 'lat': lat, 'z': z}) df = df.drop_duplicates(subset=['lon', 'lat'], keep='first') print("Done!") print("Exporting points to .xyz file...", end=" ", flush=True) with open(f"output/{name}.xyz", "w") as f: #export to .xyz f.write("LONGITUDE_(deg) LATITUDE_(deg) DEPTH_(m)\n") for lon, lat, z in zip(df['lon'], df['lat'], df['z']): f.write(f"{lon} {lat} {z}\n") print("Done!") print("Computing concave hull for fence boundary...", end=" ", flush=True) points = np.column_stack((df['lon'], df['lat'])) alpha_opt = 0.01 concave_hull = alphashape.alphashape(points, alpha_opt) hull_coords = np.array(concave_hull.exterior.coords) hull_path = path.Path(hull_coords) if isinstance(concave_hull, Polygon): print("Done!") else: print("Something went wrong.") exit(1)

我发现,从重复或接近重复点开始,我发现大坐标值也会导致此警告。尝试将坐标与下降重复和接近重复值结合在一起。这可能会解决您的问题。
    
geometry gis shapely topology alpha-shape
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.