首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Topo到Raster的编码错误

Topo到Raster的编码错误
EN

Stack Overflow用户
提问于 2017-10-27 11:03:42
回答 1查看 236关注 0票数 0

我是python的新手,我已经找到了大量关于编码和UnicodeEncodeError的问题和答案,但是我无法针对我的具体问题找出它,并不断地得到这个错误:"UnicodeEncodeError:'ascii‘编解码器不能在第7位置对字符u’\xf8 8‘进行编码:序数不在范围(128)“。我正在使用空闲的Python 2.7.12

我想对一组大约200个湖泊使用arcGis工具TopoToRaster。我有一个文件夹,包含200个文件夹(每个湖一个),在每个湖文件夹中有三个形状文件,名为lakename_P.shp (点),lakename_B.shp (多边形/边界)和lakename_L.shp (多边形/边界)。这些湖泊是丹麦湖泊,因此,几乎所有湖泊都在文件夹名称和shp名称中包含着奥、纳和(或)。

我正在使用for循环遍历单个文件夹,并以正确的功能类作为输入,为每个湖运行工具。

我找到了这段代码,它实际上适用于我的代码,但是我不能用它打印任何东西,而且我也意识到它的缺陷,所以我想避免它。

代码语言:javascript
复制
import sys
reload(sys)
sys.setdefaultencoding('utf8')

其他解决方案在读取和写入文件时使用了.encoding,而我实际上并不这么做。

除了重新加载(Sys)之外,任何人都可以重新编写解决方案吗?也许我只需要把.encoding放在某个地方,但我真的不知道在哪里,怎么做。我非常感谢大家的帮助,但我想提到的是,我已经阅读了所有的和其他博客文章。

代码语言:javascript
复制
-*- coding: iso-8859-15 -*-
import arcpy
from arcpy import env
from arcpy.sa import *
path = "//projects/soer"
arcpy.env.workspace = path
arcpy.env.overwriteOutput = True

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

wss = arcpy.ListWorkspaces("*", "Folder")
wss.sort()

for ws in wss:
   arcpy.env.workspace = ws
   for polygon in arcpy.ListFeatureClasses(feature_type = "Polygon"):
       myBoundary = polygon
   for point in arcpy.ListFeatureClasses(feature_type = "Point"):
       myPoint = point
   for polyline in arcpy.ListFeatureClasses(feature_type = "Polyline"):
       myContour = polyline

   output = ws + '/' + 'ttr'
   outTTR = TopoToRaster([TopoPointElevation([[myPoint, 'z']]), 
                          TopoContour([[myContour, 'z']]),
                          TopoBoundary([myBoundary])], 2, 
                          "#", "#", "#", "#", "NO_ENFORCE")
   outTTR.save(output)
EN

回答 1

Stack Overflow用户

发布于 2017-10-30 07:59:09

我终于自己解决了这个问题,事情就这么简单:

代码语言:javascript
复制
for polygon in arcpy.ListFeatureClasses(feature_type = "Polygon"):
    myBoundary = polygon.encode('utf-8')
for point in arcpy.ListFeatureClasses(feature_type = "Point"):
    myPoint = point.encode('utf-8')
for polyline in arcpy.ListFeatureClasses(feature_type = "Polyline"):
    myContour = polyline.encode('utf-8')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46973569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档