仅每5个形状有效读取shapefi

2024-05-06 12:10:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在佛罗里达有很多干洗设施。我正在用Python读取文件形状文件.py. 我的问题是,虽然文件中的第一个形状看起来是正确的,但之后只有每5个形状是正确的。提取一行中的四个形状时使用的类型代码无效(应介于0和31之间),并且没有点信息。以下是部分结果:

Site Name (.record[1])               .shapeType  .points
------------------------------------ ----------- --------------------
Granda Dry Cleaners                  21          [[783897.335, 215901.765]]
Scotch Dry Cleaners                  1093131927  []
J C Cleaners                         -1191051264 []
Royal Palm Cleaners                  -1606317767 []
Moorings Plaza Dry Cleaners          1091081765  []
Classic Touch Cleaners               21          [[778662.429, 221265.968]]
The Drycleaner                       1093095627  []
Randolphs Alterations & Dry Cleaner  -1140719616 []
Pelican French Cleaners              1580547967  []
Town & Country Cleaners              1091080779  []
Discount Dryclean Outlet             21          [[768035.181, 188652.929]]
The Drycleaner Cleaners              1093104359  []
Sample Cleaners                      -1090387968 []
Parisian Cleaners                    -1468878813 []
Roberts Cleaners & Tailors           1091022843  []

(注:我把点的精度降低了一点,使它们适合一条直线)。在

在我看来,这个模式是常规的——一个“有效”记录,后面是四个具有无效shapeType常量且没有点数的记录。在

我是形状文件处理的新手。这些结果是否表明我可能做得不正确?在

更新

下面的代码演示了问题(它打印了上面描述的shapeType和points列):

^{pr2}$

Tags: 文件the代码py信息类型记录site
1条回答
网友
1楼 · 发布于 2024-05-06 12:10:10

首先,您需要确定问题是否出在shapefile上。尝试使用一个真正的GIS工具(如QuantumGIS)加载文件。一旦您确定您的SHP文件是正确的,张贴您的代码,以便我们可以看到您是如何使用形状文件.py. 我的猜测是SHP文件在某种程度上是不正确的,而Quantum GIS要么修复它,要么告诉你出了什么问题。作为一个插件,python有一个嵌入的插件:QuantumGIS。在

编辑: 我从佛罗里达州的DEP下载了dryclean_apr12.shp文件,根据dbf的数据,有1423条记录。当我使用你的代码片段时,我得到1423个shapetype=1的形状,这表示每个形状都是一个点。在

因此您的代码是正确的,问题必须与文件有关。在

我在您的示例数据中注意到shapetype是21或PointM,定义为

位置字段值类型编号顺序

Byte 0 Shape Type 21 Integer 1 Little
Byte 4 X X Double 1 Little
Byte 12 Y Y Double 1 Little
Byte 20 M M Double 1 Little

点定义为

^{pr2}$

形状文件已损坏或中存在错误形状文件.py. 在

具有PointM的Shapefile的布局为

IDDD
IDDD
IDDD
IDDD
IDDD
IDDD

如果Shapefile将此作为点读取(IDD)

然后将文件读为

IDD      Rec 1 Read OK
did      Rec 2 Error on Type
ddi      Rec 3 error on Type
ddd      Rec 4 error on Type
IDD      Rec 5 Read OK

相关问题 更多 >