1

I tried to define my coordinate system on creating the shapefile but when I zoom to layer I don't see my features and ArcGIS crashes. I know it's not in the coordinate system I defined for it but it shows the coordinate under properties but doesn't reflect when I zoom to layer. Here is my python code:

import arcpy

newfcName ="newfc.shp" 

outpath = r"C:/FLOOD/IKEJA AND KOSOFE"

# Declaration
arcpy.env.overwriteOutput=True

arcpy.env.workspace= outpath

# Create new Shapefile and add FIELDS
newfc = arcpy.CreateFeatureclass_management(outpath, newfcName, "Point")
# get the coordinate system by describing a feature class
dsc = arcpy.Describe("newfc.shp" )

coord_sys = dsc.spatialReference

try:    
   # run the tool
   arcpy.DefineProjection_management(newfcName , coord_sys)

   # print messages when the tool runs successfully
   print(arcpy.GetMessages(0))

except arcpy.ExecuteError:
   print(arcpy.GetMessages(2))

except Exception as ex:
   print(ex.args[0])

arcpy.AddField_management(newfc, "X", "STRING", field_length = 50)
arcpy.AddField_management(newfc, "Y", "STRING", field_length = 50)
arcpy.AddField_management(newfc, "Z", "STRING", field_length = 50)
arcpy.AddField_management(newfc, "I", "FLOAT", field_length = 50)

# Reference Cursors
cursor=arcpy.da.InsertCursor(newfc, ["X", "Y", "Z", "I"])

# Read File 
a = open("C:/FLOOD/IKEJA AND KOSOFE/DEM/532722.txt","r")

inputF = a.readlines()

for line in inputF:
    xCoordinate, yCoordinate, zValue, iValue = line.split(" ")

    newRow = (str(xCoordinate), str(yCoordinate), str(zValue), float(iValue))

    cursor.insertRow(newRow)

a.close()
  • Please use code formatting ({}) on code. What you have now is not legible. – Vince Aug 9 '17 at 14:44
  • 2
    Friends don't let friends put spaces in folder or file names. – Vince Aug 9 '17 at 18:30
3

You need to populate the geometry column, for example with the SHAPE@XY token:

cursor=arcpy.da.InsertCursor(newfc, [ "SHAPE@XY", "X", "Y", "Z", "I"])

# Read File 
a = open("C:/FLOOD/IKEJA AND KOSOFE/DEM/532722.txt","r")

inputF = a.readlines()

for line in inputF:
    xCoordinate, yCoordinate, zValue, iValue = line.split(" ")

    xy = (float(xCoordinate), float(yCoordinate))

    newRow = (xy, str(xCoordinate), str(yCoordinate), str(zValue), float(iValue))

    cursor.insertRow(newRow)

I don't understand how you're defining the coordinate system - it looks like you're getting the (empty) coordinate system from your newly created shapefile and then setting it to the same empty object, though maybe this a typo?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.