我是靠谱客的博主 傻傻曲奇,最近开发中收集的这篇文章主要介绍arcgis 点坐标python_ArcGIS由XY坐标直接生成点、线、面脚本,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

'''----------------------------------------------------------------------------------

Tool

Name: CreateFeaturesFromTextFile

Source Name: CreateFeaturesFromTextFile.py

Version: ArcGIS

10.0 Author: Environmental Systems Research Institute Inc.

Required Argumuments: An Input

Text File containing feature coordinates

An Input Character designating the decimal separator used in the

text file.

An output feature class

Optional

Arguments: A

spatial reference can be specified. This will be

the

spatial reference of the output fc.

Description: Reads a text file with feature coordinates and creates a feature

class

from the coordinates.

----------------------------------------------------------------------------------'''

import string, os, sys, locale, arcgisscripting

gp = arcgisscripting.create()

gp.overwriteoutput = 1

msgErrorTooFewParams = "Not enough parameters provided."

msgUnknownDataType = " is not a valid datatype. Datatype must be

point, multipoint, polyline or polygon."

msgErrorCreatingPoint = "Error creating point %s on feature %s"

# sets all the point properties

def createPoint(point, geometry):

try:

point.id = geometry[0]

point.y = geometry[1]

point.x = geometry[2]

# When empty values are written out from pyWriteGeomToTextFile,

they come as 1.#QNAN

# Additionally, the user need not supply these values, so if they

aren't in the list don't add them

if len(geometry) > 3:

if geometry[3].lower().find("nan") == -1: point.z =

geometry[3]

if len(geometry) > 4:

if geometry[4].lower().find("nan") == -1: point.m =

geometry[4]

return point

except:

raise Exception, msgErrorCreatingPoint

try:

# get the

provided parameters

inputTxtFile

= open(gp.getparameterastext(0))

fileSepChar

= gp.getparameterastext(1)

outputFC =

gp.getparameterastext(2)

# spatial

reference is optional

outputSR =

gp.getparameterastext(3)

# make

sure the text type specified in the text file is valid.

inDataT =

inputTxtFile.readline().strip().lower()

d =

{'d':'point','ml':'multipoint','x':'polyline','m':'polygon'}

inDataType =

d[inDataT]

dataTypes =

["point", "multipoint", "polyline", "polygon"]

if

inDataType.lower() not in dataTypes:

msgUnknownDataType = "%s%s" % (inDataType,

msgUnknownDataType)

raise Exception, msgUnknownDataType

# create

the new featureclass

gp.toolbox =

"management"

gp.CreateFeatureclass(os.path.split(outputFC)[0],

os.path.split(outputFC)[1], inDataType, "#", "ENABLED", "ENABLED",

outputSR)

# create a

new field to assure the id of each feature is preserved.

idfield =

"File_ID"

gp.addfield(outputFC, idfield, "LONG")

# get some

information about the new featureclass for later use.

outDesc =

gp.describe(outputFC)

shapefield =

outDesc.ShapeFieldName

# create the

cursor and objects necessary for the geometry creation

rows =

gp.insertcursor(outputFC)

pnt =

gp.createobject("point")

pntarray =

gp.createobject("Array")

partarray =

gp.createobject("Array")

locale.setlocale(locale.LC_ALL, '')

sepchar =

locale.localeconv()['decimal_point']

# loop

through the text file.

featid =

0

lineno =

1

for line in

inputTxtFile.readlines():

lineno += 1

# create an array from each line in the input text file

values = line.replace("n", "").replace("r",

"").replace(fileSepChar, sepchar).split(" ")

# for a point feature class simply populate a point object and

insert it.

if inDataType == "point" and values[0].lower() != "end":

row = rows.newrow()

pnt = createPoint(pnt, values)

row.SetValue(shapefield, pnt)

row.SetValue(idfield, int(values[0]))

rows.insertrow(row)

# for a multipoint the text file is organized a bit

differently. Groups of points must be inserted at

the same time.

elif inDataType == "multipoint":

if len(values) > 2:

pnt = createPoint(pnt, values)

pntarray.add(pnt)

elif (len(values) == 2 and lineno != 2) or values[0].lower() ==

"end":

row = rows.newrow()

row.SetValue(shapefield, pntarray)

# store the feature id just in case there is an error. helps track

down the offending line in the input text file.

if values[0].lower() != "end":

row.SetValue(idfield, featid)

featid = int(values[0])

else:

row.SetValue(idfield, featid)

rows.insertrow(row)

pntarray.removeall()

elif (len(values) == 2 and lineno == 2):

最后

以上就是傻傻曲奇为你收集整理的arcgis 点坐标python_ArcGIS由XY坐标直接生成点、线、面脚本的全部内容,希望文章能够帮你解决arcgis 点坐标python_ArcGIS由XY坐标直接生成点、线、面脚本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部