Python:如何从文本文件创建点形状文件

Python:如何从文本文件创建点形状文件,python,polygon,arcgis,shapefile,arcpy,Python,Polygon,Arcgis,Shapefile,Arcpy,我正在编写一个python代码来读取多边形形状文件中的点,并将它们保存在点形状文件中。 首先,我制作了一个文本文件,并将点(x,y)存储在该.txt文件中。然后我试图从文本文件中创建一个点形状文件,但它给出了一个错误。 以下是代码(仅最后一部分): 以下是错误: Traceback (most recent call last): File "C:\Lab5\P_Code_L5", line 49, in <module> point.X, point.Y = line

我正在编写一个python代码来读取多边形形状文件中的点,并将它们保存在点形状文件中。 首先,我制作了一个文本文件,并将点(x,y)存储在该.txt文件中。然后我试图从文本文件中创建一个点形状文件,但它给出了一个错误。
以下是代码(仅最后一部分):

以下是错误:

Traceback (most recent call last):
  File "C:\Lab5\P_Code_L5", line 49, in <module>
    point.X, point.Y  = line.split()
  File "C:\Program Files (x86)\ArcGIS\Desktop10.1\arcpy\arcpy\arcobjects\_base.py", line 87, in _set
    return setattr(self._arc_object, attr_name, cval(val))
RuntimeError: Point: Input value is not numeric
回溯(最近一次呼叫最后一次):
文件“C:\Lab5\P_代码_L5”,第49行,在
点.X,点.Y=line.split()
文件“C:\Program Files(x86)\ArcGIS\Desktop10.1\arcpy\arcpy\arcobjects\\u base.py”,第87行,在\u集中
返回setattr(self.\u arc\u对象、attr\u名称、cval(val))
运行时错误:点:输入值不是数字

您是否尝试调用float(X)、float(Y),因为它可能不喜欢字符串

如果可以将输入输入到numpy阵列中,则可以通过一个步骤将其转换为要素类:


这里有一个替代解决方案。它读入一个选项卡描述的.ascii文件(非常类似于.txt文件),它假定该文件的标题为经度和纬度。我遇到了这个问题,然后得出了这个解决方案,所以我想它可能会帮助一些人

# ------------------------------------------------------
# IMPORTS
# ------------------------------------------------------

import os
import pandas as pd
from shapely.geometry import Point, mapping
from fiona import collection

# ------------------------------------------------------
# INPUTS
# ------------------------------------------------------

# Define path
path = os.path.abspath(os.path.dirname(__file__))

# Set working directory
os.chdir(path)  

# Define file to convert
file = 'points.ascii'

# Define shp file schema
schema = { 'geometry': 'Point', 'properties': { 'LocationID': 'str', 'Latitude': 'float', 'Longitude': 'float' } }

# Read in data
data = pd.read_csv(file, sep='\t') 

# Define shp file to write to
shpOut = 'points.shp'

# Create shp file
with collection(shpOut, "w", "ESRI Shapefile", schema) as output:
    # Loop through dataframe and populate shp file
    for index, row in data.iterrows():
        
        # Define point
        point = Point(row['Longitude'], row['Latitude'])
        # Write output
        output.write({
            'properties': {'LocationID': row['LocationID'], 'Latitude': row['Latitude'], 'Longitude': row['Longitude'] }, 
            'geometry': mapping(point)
        })

它到底给出了什么错误文本?如果你改为发布到地理信息系统,你可能会在这个问题上得到更多的关注。。。我从err KeyError中得到raise KeyError(键):“经度”听起来好像没有“经度”标题。你的文件有什么标题?
# ------------------------------------------------------
# IMPORTS
# ------------------------------------------------------

import os
import pandas as pd
from shapely.geometry import Point, mapping
from fiona import collection

# ------------------------------------------------------
# INPUTS
# ------------------------------------------------------

# Define path
path = os.path.abspath(os.path.dirname(__file__))

# Set working directory
os.chdir(path)  

# Define file to convert
file = 'points.ascii'

# Define shp file schema
schema = { 'geometry': 'Point', 'properties': { 'LocationID': 'str', 'Latitude': 'float', 'Longitude': 'float' } }

# Read in data
data = pd.read_csv(file, sep='\t') 

# Define shp file to write to
shpOut = 'points.shp'

# Create shp file
with collection(shpOut, "w", "ESRI Shapefile", schema) as output:
    # Loop through dataframe and populate shp file
    for index, row in data.iterrows():
        
        # Define point
        point = Point(row['Longitude'], row['Latitude'])
        # Write output
        output.write({
            'properties': {'LocationID': row['LocationID'], 'Latitude': row['Latitude'], 'Longitude': row['Longitude'] }, 
            'geometry': mapping(point)
        })