UPDATE info set geom = ((point(info.lng::float , info.lat::float)))::geometry
时间: 2024-02-03 15:01:58 浏览: 62
这个 SQL 语句将 `info` 表中的 `lng` 和 `lat` 字段组成的点坐标转换为 `geometry` 类型的几何对象,并更新到 `geom` 字段中。
如果您执行这个 SQL 语句后发现 `geom` 字段的值为空,可能是因为 `lng` 或 `lat` 字段中存在非法值,比如空值、非数字值或者超出经纬度范围的值。您可以检查 `lng` 和 `lat` 字段的值是否合法,或者您可以提供更多信息,我可以帮您进一步排查问题。
相关问题
import arcpy ... ... # 设置工作空间和要素类 ... arcpy.env.workspace = "C:\Users\JY\Desktop\椒山十组\构面" ... fc = "水系面" ... ... # 创建游标来更新属性表 ... with arcpy.da.UpdateCursor(fc, ["SHAPE@XY", "Start_x", "Start_y"]) as cursor: ... for row in cursor: ... # 获取面要素的起始点坐标 ... geom = row[0] ... start_x, start_y = geom.firstPoint.X, geom.firstPoint.Y ... ... # 将起始点坐标存储到属性表中 ... row[1] = start_x ... row[2] = start_y ... cursor.updateRow(row)
这段代码使用了 arcpy 库来更新要素类的属性表。首先,设置了工作空间和要素类。然后,通过 `arcpy.da.UpdateCursor()` 函数创建了一个游标,用于遍历要素类中的每一个要素,并更新其属性表中的字段值。
在遍历过程中,通过 `row[0]` 获取要素的几何形状,再通过 `.firstPoint.X` 和 `.firstPoint.Y` 获取其起始点的 X 和 Y 坐标。最后,将这些坐标值存储到属性表中的相应字段中,通过 `cursor.updateRow(row)` 更新属性表。
需要注意的是,代码中的路径需要使用双反斜杠或者单斜杠进行转义,否则可能会出现语法错误。
纠正这段代码的错误:#针对fid=126的文件过大,重新还原 final_geom=pd.read_csv('/content/drive/MyDrive/touying_fishnet_832_1km_final-cropWGS84-GLC30/Target_126'+'test10-15.csv') final_geom2=pd.read_csv('/content/drive/MyDrive/touying_fishnet_832_1km_final-cropWGS84-GLC30/Target_126'+'test16-20.csv') inter_1=pd.concat([final_geom.iloc[:,5:17],final_geom.iloc[:,23:41]], axis=1) inter_2=pd.concat([final_geom2.iloc[:,5:15],final_geom2.iloc[:,21:36]], axis=1) merge=pd.concat([inter_1,inter_2], axis=1) merge.columns base=pd.concat([base,final_geom.iloc[:,17:23]], axis=1) for i in ['crop','forest','impervious']: for j in range(10,21): c_name=str(str(i)+str(j)) # print(c_name) base[c_name]=merge.loc[:,c_name] base=pd.concat([base,final_geom.iloc[:,-3:]], axis=1) base.columns base.to_csv('/content/drive/MyDrive/touying_fishnet_832_1km_final-cropWGS84-GLC30/Target_126'+'test10-20.csv')
纠正后的代码如下:
```
# 针对fid=126的文件过大,重新还原
final_geom=pd.read_csv('/content/drive/MyDrive/touying_fishnet_832_1km_final-cropWGS84-GLC30/Target_126'+'/test10-15.csv')
final_geom2=pd.read_csv('/content/drive/MyDrive/touying_fishnet_832_1km_final-cropWGS84-GLC30/Target_126'+'/test16-20.csv')
inter_1=pd.concat([final_geom.iloc[:,5:17],final_geom.iloc[:,23:41]], axis=1)
inter_2=pd.concat([final_geom2.iloc[:,5:15],final_geom2.iloc[:,21:36]], axis=1)
merge=pd.concat([inter_1,inter_2], axis=1)
base=pd.concat([base,final_geom.iloc[:,17:23]], axis=1)
for i in ['crop','forest','impervious']:
for j in range(10,21):
c_name=str(i)+str(j)
# print(c_name)
base[c_name]=merge.loc[:,c_name]
base=pd.concat([base,final_geom.iloc[:,-3:]], axis=1)
base.to_csv('/content/drive/MyDrive/touying_fishnet_832_1km_final-cropWGS84-GLC30/Target_126'+'/test10-20.csv', index=False)
```
主要修改的地方有:
1. 在读取文件路径的时候,将字符串拼接符号 `+` 改为了 `/`。
2. 在最后一行保存文件时,加了参数 `index=False`,不保存行索引。
3. 在合并数据时,将字符串拼接符号 `+` 改为了 `str()` 函数。
4. 将变量 `merge` 与变量 `base` 合并时,加了参数 `axis=1`,表示按列拼接。
阅读全文