python-3.x Arcpy脚本一直显示错误“TypeError:应为字符串或类似字节的对象”

owfi6suc  于 2023-01-06  发布在  Python
关注(0)|答案(2)|浏览(225)

我对arcpy和大部分python都是新手。我的新组织有arcpy脚本(由前雇员编写),可以将TAB文件转换为shp,还可以在shp中创建缓冲区。在我们将ArcGIS Pro升级到2.8.3之前,它一直运行得很好。我有python的基本技能,希望能调试这个脚本。这是我们正在使用的脚本-

#Import libraries
import geopandas as gpd

#Set directory as the same path as where this file is saved/pasted
abspath=os.path.abspath
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)

#Create a subfolder within the directory, folder called siteboundary
ProjectFolder=dname

#Locate the tab file and set as variable
#The script is locating a file that ends with "Site Boundary.TAB"
files=os.listdir(ProjectFolder)
Tabfile=[i for i in files if i.endswith('Site Boundary.TAB')]
def listToString(s): 
    
    # initialize an empty string
    str1 = " " 
    
    # return string  
    return (str1.join(s))
TabfilePath=ProjectFolder+'\\'+listToString(Tabfile)


#This creates the site boundary shapefile
Tabdata=gpd.read_file(TabfilePath,driver="MapInfo File")
ShapefilePath=ProjectFolder+r"\siteboundary.shp"
Tabdata.to_file(ShapefilePath)

#This creates the site's multiring buffer

#set arcpy environment
arcpyenv=ProjectFolder

#Allow arcpy to overwrite
arcpy.env.workspace=arcpyenv
arcpy.env.overwrite=True
arcpy.env.overwriteOutput = True

#Set multi ring buffer parameters 
distances=[200,500,1000,2000]
bufferunit="meters"
arcpy.analysis.MultipleRingBuffer('siteboundary.shp','sitebuffer.shp',distances,bufferunit,"distance","NONE")

#Print end message when done
arcpy.AddMessage("Conversion done,your file is located in"+arcpyenv)
print("Conversion done,your file is located in "+arcpyenv)'```

我们在所有的PC和所有的脚本(json到shp和buffer以及只是buffer创建脚本)中得到了相同的错误。我们正在使用脚本来半自动化流程,因为我们一天要做很多事情。
我尝试从其他来源的解决方案解决这个问题,但没有一个是相关的。要了解更多细节,在更新ArcGIS Pro后,我不得不克隆环境来运行脚本,我假设那里可能发生了一些事情,但当我检查安装的库时,它同时具有运行这些脚本所必需的arcpy 2. 8和geopandas 0. 8. 1。
另一件事是,脚本只在一个系统中运行,其中ArcGIS没有更新,并且在计算机配置文件的主文件中运行,而不是在其他系统中运行。

a2mppw5e

a2mppw5e1#

我发现在ArcGIS Pro Python包管理中以及通过anaconda提示符安装geopandas时存在问题。因此,我在esri https://support.esri.com/en/technical-article/000024177上找到了此解决方法。在此方法中,您可以通过Python命令提示符和命令行conda install geopandas libtiff=4.0.10安装geopandas。但是,ArcGIS Pro中的笔记本将无法工作。因此,您必须在同一python命令提示符conda install -c anaconda jupyter_client=5.3.1下执行此命令
在克隆环境中运行这两个代码解决了所有问题。

jqjz2hbq

jqjz2hbq2#

如果要同时使用arcpy和Geopandas,则需要首先克隆arcgis环境,然后才能使用conda在克隆的环境中安装Geopandas

conda install --channel conda-forge geopandas

1_pic
2_pic
3_pic
通过这种方式,您甚至可以使用IDE中的环境来更轻松地编写项目代码。

相关问题