Here are thousands of pictures in JPG or TIF format with world file such as jgw and tfw. Inside each file, projection information for each pictures were contained. One example of the content for a typical TFW file is showed in below:


How can I transfer it into DBF through ArcPy?

I want make a catalog file for display on ArcGIS.

  • It is not so clear to me what you mean by "display on ArcGIS", but I think if you use built-in csv module by following dbf naming conventions, you would have similar effect in displaying in ArcGIS. If you insist about DBF, you may want to have a look at this stackoverflow.com/questions/4440791/…
    – fatih_dur
    Jul 3, 2015 at 12:38

1 Answer 1


Try script below. It is very old (2008) - one of my very 1st Python scripts, not elegant at all and can be rewritten using a fraction of code. It works, so never bothered to renew it.

Script takes 4 parameters as inputs. I hope you know how to define script parameters in parameters dialog.

  1. outputFolder - folder where table based image catalog will be saved. Type - folder, output,
  2. outputTable - name of output dBase table, parameter type string, e.g. imcat.dbf. Direction - input. It will be saved in outputFolder. It is your catalog to be displayed in ArcGIS.
  3. layoutTable - layout dBase table with 5 colimns: IMAGE, XMIN, YMIN, XMAX, YMAX. First field is string (250 long), the rest are doubles. Yes, user have to create this table first. I did it once, and use this tool countless number of times, pointing to the same layout table.
  4. inRasters - input raster, type raster dataset, multiple input. Use ArcCatalog to drag and drop multiple images onto it.

Some rasters don't use world files, tool handles them nicely/

    import arcgisscripting, sys, os
    import traceback

        gp = arcgisscripting.create()
        # output folder to store the table
        outputFolder = gp.GetParameterAsText(0)
        # table name
        outputTable = gp.GetParameterAsText(1)
        # template table name
        layoutTable = gp.GetParameterAsText(2)
        inRasters = gp.GetParameterAsText(3)
        # The list is split by semicolons ";"
        inLayers = inRasters.split(";")
        gp.CreateTable_management(outputFolder, outputTable, layoutTable, "")
        inRows = gp.insertcursor(outputFolder+os.sep+outputTable)
        for inRaster in inLayers:
            desc = gp.Describe(theR)
            theCoords=theCoords.split(" ")
            xMin = float(theCoords[0])
            xMax = float(theCoords[2])
            yMin = float(theCoords[1])
            yMax = float(theCoords[3])
            inRow = inRows.newrow()
            inRow.IMAGE = inRaster.strip("'")
            inRow.XMIN = xMin
            inRow.YMIN = yMin
            inRow.XMAX = xMax
            inRow.YMAX = yMax
            gp.ADDMESSAGE (inRaster + "...processed")

        del inRows
        del inRow
        print "Done"
        # get the traceback object
        tb = sys.exc_info()[2]

        # tbinfo contains the line number that the code failed on and the 
        #  code from that line
        tbinfo = traceback.format_tb(tb)[0]

        # concatenate information together concerning the error into a 
        #  message string
        pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n    " + \
                str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"

        # Generate a message string for any geoprocessing tool errors
        msgs = "GEOPROCESSOR ERRORS:\n" + gp.GetMessages(2) + "\n"

        # Return gp messages for use with a script tool
        print msgs
        print pymsg
  • Hi, i found it is difficult to implement this code. I don't know how to set the layoutTable and inRasters as you say?
    – King-Zhao
    Aug 4, 2015 at 2:06

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