# coding:cp932
# Purpose : Mif ファイルをフィーチャクラスに変換します。
#
# Author : ESRIジャパン


import arcpy,os.path,sys
from math import floor

arcpy.env.overwriteOutput = 1

inmif = arcpy.GetParameterAsText(0)
#inmif = r"D:\Data\Mif\Watanabe\RD14CHK.MIF"

mif = open(inmif,"r")
miflines = mif.readlines()

try:
    for index,line in enumerate(miflines):
        if "data\n" in line.lower():
            Dataindex = index

except:
    arcpy.AddError(u"対応していない形式のため終了します。")
    sys.exit()

try:
    dir(Dataindex)
except:
    arcpy.AddError(u"対応していない形式のため終了します。")
    sys.exit()



geomlines = miflines[Dataindex:]

PolygonList = []
PolylineList = []
PointList = []
record = 0

for index,line in enumerate(geomlines):
    if "region" in line.lower():
        PolygonList.append(record)
        record += 1
    elif "pline" in line.lower():
        PolylineList.append(record)
        record += 1
    elif "point" in line.lower():
        PointList.append(record)
        record += 1
    elif "text" in line.lower():
        PointList.append(record)
        record += 1


PRJCheck = arcpy.GetParameterAsText(2)
PRJ = arcpy.GetParameterAsText(3)
#PRJCheck = True

if PRJCheck:

    for line in miflines:
        if "coordsys earth projection" in line.lower():
            SRInfo = miflines[miflines.index(line)].split()


    Projection = SRInfo[3].replace(",","")
    Datum = SRInfo[4].replace(",","")

    if Projection == "1":
        if Datum == "33":
            PRJ = 'GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]'
        elif Datum == "97":
            PRJ = 'GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]'
        elif Datum == "104":
            PRJ = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]'
        elif Datum == "152":
            PRJ = 'GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]'
        elif Datum == "0":
            PRJ ='GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]'
        else:
            PRJ = ""
    elif Projection == "8":
        originX = int(floor(float(SRInfo[6].replace(",",""))))
        originY = int(SRInfo[7].replace(",",""))
        if Datum == "33":
             if originX == 129 and originY == 33:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_1",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
             elif originX == 131 and originY == 33:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_2",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
             elif originX == 132 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_3",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",132.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
             elif originX == 133 and originY == 33:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_4",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",133.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
             elif originX == 134 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_5",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",134.3333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
             elif originX == 136 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_6",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
             elif originX == 137 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_7",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",137.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
             elif originX == 138 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_8",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",138.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
             elif originX == 139 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_9",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",139.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
             elif originX == 140 and originY == 40:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_10",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]'
             elif originX == 140 and originY == 44:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_11",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
             elif originX == 142 and originY == 44:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_12",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
             elif originX == 144 and originY == 44:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_13",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",144.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
             elif originX == 142 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_14",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
             elif originX == 127 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_15",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
             elif originX == 124 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_16",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",124.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
             elif originX == 131 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_17",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
             elif originX == 136 and originY == 20:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_18",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",20.0],UNIT["Meter",1.0]]'
             elif originX == 154 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_19",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
        elif Datum == "97":
            if originX == 129 and originY == 33:
                PRJ = 'PROJCS["Japan_Zone_1",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
            elif originX == 131 and originY == 33:
                PRJ = 'PROJCS["Japan_Zone_2",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
            elif originX == 132 and originY == 36:
                PRJ = 'PROJCS["Japan_Zone_3",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",132.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 133 and originY == 33:
                PRJ = 'PROJCS["Japan_Zone_4",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",133.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
            elif originX == 134 and originY == 36:
                PRJ = 'PROJCS["Japan_Zone_5",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",134.3333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 136 and originY == 36:
                PRJ = 'PROJCS["Japan_Zone_6",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 137 and originY == 36:
                PRJ = 'PROJCS["Japan_Zone_7",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",137.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 138 and originY == 36:
                PRJ = 'PROJCS["Japan_Zone_8",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",138.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 139 and originY == 36:
                PRJ = 'PROJCS["Japan_Zone_9",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",139.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 140 and originY == 40:
                PRJ = 'PROJCS["Japan_Zone_10",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]'
            elif originX == 140 and originY == 44:
                PRJ = 'PROJCS["Japan_Zone_11",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
            elif originX == 142 and originY == 44:
                PRJ = 'PROJCS["Japan_Zone_12",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
            elif originX == 144 and originY == 44:
                PRJ = 'PROJCS["Japan_Zone_13",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",144.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
            elif originX == 142 and originY == 26:
                PRJ = 'PROJCS["Japan_Zone_14",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 127 and originY == 26:
                PRJ = 'PROJCS["Japan_Zone_15",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 124 and originY == 26:
                PRJ = 'PROJCS["Japan_Zone_16",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",124.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 131 and originY == 26:
                PRJ = 'PROJCS["Japan_Zone_17",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 136 and originY == 20:
                PRJ = 'PROJCS["Japan_Zone_18",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",20.0],UNIT["Meter",1.0]]'
            elif originX == 154 and originY == 26:
                PRJ = 'PROJCS["Japan_Zone_19",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
        elif Datum == "152":
            if originX == 129 and originY == 33:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_1",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
            elif originX == 131 and originY == 33:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_2",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
            elif originX == 132 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_3",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",132.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 133 and originY == 33:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_4",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",133.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]'
            elif originX == 134 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_5",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",134.3333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 136 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_6",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 137 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_7",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",137.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 138 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_8",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",138.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 139 and originY == 36:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_9",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",139.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]'
            elif originX == 140 and originY == 40:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_10",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]'
            elif originX == 140 and originY == 44:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_11",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
            elif originX == 142 and originY == 44:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_12",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
            elif originX == 144 and originY == 44:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_13",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",144.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]'
            elif originX == 142 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_14",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 127 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_15",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 124 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_16",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",124.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 131 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_17",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
            elif originX == 136 and originY == 20:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_18",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",20.0],UNIT["Meter",1.0]]'
            elif originX == 154 and originY == 26:
                PRJ = 'PROJCS["JGD_2000_Japan_Zone_19",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]'
        else:
            PRJ = ""
    else:
        PRJ = ""

outws = arcpy.GetParameterAsText(1)
#outws = r"D:\Data\hoge"
outName = os.path.basename(inmif)[:-4]

if len(PolygonList) != 0:
    arcpy.CreateFeatureclass_management(outws,outName + "_polygon","POLYGON","","","",PRJ)
if len(PolylineList) != 0:
    arcpy.CreateFeatureclass_management(outws,outName + "_polyline","POLYLINE","","","",PRJ)
if len(PointList) != 0:
    arcpy.CreateFeatureclass_management(outws,outName + "_point","POINT","","","",PRJ)



Polygon_idxlist = []
Polyline_idxlist = []
Point_idxlist = []


for index,line in enumerate(geomlines):
    if "region" in line.lower():
            tmplist = []
            v = 0
            tmpindex = int(line.split()[1])
            print tmpindex
            if tmpindex != 1:
                End = index
                while v < tmpindex :
                    Vertex = int(geomlines[End+1])
                    VerIndex = End + 1
                    Start = VerIndex + 1
                    End = Start + Vertex -1
                    tmplist.append((Start,End))
                    v += 1
                Polygon_idxlist.append(tmplist)
            else:
                Vertex = int(geomlines[index + 1])
                Polygon_idxlist.append((index+2,index + Vertex+1))
    if "pline" in line.lower():
        if "multiple" in line.lower():
            tmplist = []
            v = 0
            tmpindex = int(line.split()[2])
            print tmpindex
            End = index
            while v < tmpindex :
                Vertex = int(geomlines[End+1])
                VerIndex = End + 1
                Start = VerIndex + 1
                End = Start + Vertex -1
                tmplist.append((Start,End))
                v += 1
            Polyline_idxlist.append(tmplist)
        else:
            Vertex = int(line.split()[1])
            Polyline_idxlist.append((index+1,index + Vertex))
    if "point" in line.lower():
        Point_idxlist.append((line.split()[1],line.split()[2]))
    if "text" in line.lower():
        x = str((float(geomlines[index + 2].split()[0]) + float(geomlines[index + 2].split()[2]))/2)
        y = str((float(geomlines[index + 2].split()[1]) + float(geomlines[index + 2].split()[3]))/2)
        Point_idxlist.append((x,y))

outName = os.path.basename(inmif)[:-4]

if len(PolygonList) != 0:
    FC_Polygon = arcpy.CreateFeatureclass_management(outws,outName + "_polygon","POLYGON","","","",PRJ)
if len(PolylineList) != 0:
    FC_Polyline = arcpy.CreateFeatureclass_management(outws,outName + "_polyline","POLYLINE","","","",PRJ)
if len(PointList) != 0:
    FC_Point = arcpy.CreateFeatureclass_management(outws,outName + "_point","POINT","","","",PRJ)

desc = arcpy.Describe(outws)

FieldsName = []
FieldsType = []
for line in miflines:
    if "columns" in line.lower():
        Fields = range(miflines.index(line)+1,miflines.index(line) + int(line.split()[1]) + 1)

if Fields:
    for Field in Fields:
        if desc.workspaceType ==  u"FileSystem":
            if len(miflines[Field].split()[0]) > 10:
                Name = miflines[Field].split()[0].decode("cp932")[:5]
            else:
                Name = miflines[Field].split()[0].decode("cp932")
        else:
            Name = miflines[Field].split()[0].decode("cp932")
        Type = miflines[Field].split()[1]
        if "integer" in Type.lower():
            FieldType = "LONG"
        elif "char" in Type.lower():
            FieldType = "TEXT"
        elif "decimal" in Type.lower():
            FieldType = "DOUBLE"
        elif "float" in Type.lower():
            FieldType = "FLOAT"
        else:
            FieldType = "TEXT"

        try:
            if len(PolygonList) != 0:
                arcpy.AddField_management(FC_Polygon.getOutput(0),Name,FieldType)
            if len(PolylineList) !=0:
                arcpy.AddField_management(FC_Polyline.getOutput(0),Name,FieldType)
            if len(PointList) != 0:
                arcpy.AddField_management(FC_Point.getOutput(0),Name,FieldType)
            FieldsName.append(Name)
            FieldsType.append(FieldType)
        except:
            if len(PolygonList) != 0:
                arcpy.AddField_management(FC_Polygon.getOutput(0),Name[:4] + u"_",FieldType)
            if len(PolylineList) !=0:
                arcpy.AddField_management(FC_Polyline.getOutput(0),Name[:4] + u"_",FieldType)
            if len(PointList) != 0:
                arcpy.AddField_management(FC_Point.getOutput(0),Name[:4] + u"_",FieldType)
            FieldsName.append(Name)
            FieldsType.append(FieldType)


FieldCount = len(FieldsName)
inmid = inmif.replace("mif","mid").replace("MIF","MID")


if os.path.exists(inmid):
    mid = open(inmid,"r")
    midlines = mid.readlines()

    RecordCount = len(midlines)


    tmp_Records = []
    for Val in midlines:
        if "," in Val:
            tmp_Records.append(Val.split(","))
        elif ";" in Val:
            tmp_Records.append(Val.split(";"))
        else:
            tmp_Records.append(Val.split())

    j = 0
    new_Records = []
    while j < RecordCount:
        list = []
        k = 0
        while k < FieldCount:
            if FieldsType[k] == "LONG":
                if tmp_Records[j][k].strip().replace('"',"") == "":
                    val = tmp_Records[j][k].strip().replace('"',"")
                else:
                    val = int(tmp_Records[j][k].strip().replace('"',""))
            elif FieldsType[k] == "FLOAT" or FieldsType[k] == "DOUBLE":
                if tmp_Records[j][k].strip().replace('"',"") == "":
                    val = tmp_Records[j][k].strip().replace('"',"")
                else:
                    val = float(tmp_Records[j][k].strip().replace('"',""))
            else:
                val = tmp_Records[j][k].strip().replace('"',"")
            list.append(val)
            k += 1
        new_Records.append(list)
        j += 1

##

if os.path.exists(inmid):
    if len(PointList) != 0:
        i = 0
        cur = arcpy.InsertCursor(FC_Point.getOutput(0))
        Point = arcpy.Point()
        while i < len(PointList):
            Point.X = float(Point_idxlist[i][0])
            Point.Y = float(Point_idxlist[i][1])
            geoPoint = arcpy.PointGeometry(Point,PRJ)
            row = cur.newRow()
            row.Shape = geoPoint
            for Field in FieldsName:
                try:
                    row.setValue(Field,new_Records[PointList[i]][FieldsName.index(Field)])
                except:
                    continue
            cur.insertRow(row)
            i += 1
    if len(PolylineList) != 0:
        i = 0
        cur = arcpy.InsertCursor(FC_Polyline.getOutput(0))
        geoPoint = arcpy.Point()
        while i < len(PolylineList):
            array = arcpy.Array()
            if str(type(Polyline_idxlist[i])) == "<type 'list'>":
                partCount = 0
                tmparray = arcpy.Array()
                while partCount < len(Polyline_idxlist[i]):
                    pline = geomlines[Polyline_idxlist[i][partCount][0]:Polyline_idxlist[i][partCount][1]+1]
                    for point in pline:
                        geoPoint.X = float(point.split()[0])
                        geoPoint.Y = float(point.split()[1])
                        tmparray.add(geoPoint)
                    array.add(tmparray)
                    tmparray.removeAll()
                    partCount += 1
            else:
                pline = geomlines[Polyline_idxlist[i][0]:Polyline_idxlist[i][1]+1]
                for point in pline:
                    geoPoint.X = float(point.split()[0])
                    geoPoint.Y = float(point.split()[1])
                    array.add(geoPoint)

            geoLine = arcpy.Polyline(array,PRJ)
            row = cur.newRow()
            row.Shape = geoLine
            for Field in FieldsName:
                try:
                    row.setValue(Field,new_Records[PolylineList[i]][FieldsName.index(Field)])
                except:
                    continue
            cur.insertRow(row)
            i += 1

    if len(PolygonList) != 0:
        i = 0
        cur = arcpy.InsertCursor(FC_Polygon.getOutput(0))
        geoPoint = arcpy.Point()
        while i < len(PolygonList):
            array = arcpy.Array()
            if str(type(Polygon_idxlist[i])) == "<type 'list'>":
                partCount = 0
                tmparray = arcpy.Array()
                while partCount < len(Polygon_idxlist[i]):
                    pline = geomlines[Polygon_idxlist[i][partCount][0]:Polygon_idxlist[i][partCount][1]+1]
                    FirstPoint = arcpy.Point(float(pline[0].split()[0]),float(pline[0].split()[1]))
                    for point in pline:
                        geoPoint.X = float(point.split()[0])
                        geoPoint.Y = float(point.split()[1])
                        tmparray.add(geoPoint)
                    tmparray.add(FirstPoint)
                    array.add(tmparray)
                    tmparray.removeAll()
                    partCount += 1
            else:
                pline = geomlines[Polygon_idxlist[i][0]:Polygon_idxlist[i][1]+1]
                FirstPoint = arcpy.Point(float(pline[0].split()[0]),float(pline[0].split()[1]))
                for point in pline:
                    geoPoint.X = float(point.split()[0])
                    geoPoint.Y = float(point.split()[1])
                    array.add(geoPoint)
                array.add(FirstPoint)
            geoPolygon = arcpy.Polygon(array,PRJ)
            row = cur.newRow()
            row.Shape = geoPolygon
            for Field in FieldsName:
                try:
                    row.setValue(Field,new_Records[PolygonList[i]][FieldsName.index(Field)])
                except:
                    continue
            cur.insertRow(row)
            i += 1

else:
    if len(PointList) != 0:
        i = 0
        cur = arcpy.InsertCursor(FC_Point.getOutput(0))
        Point = arcpy.Point()
        while i < len(PointList):
            Point.X = float(Point_idxlist[i][0])
            Point.Y = float(Point_idxlist[i][1])
            geoPoint = arcpy.PointGeometry(Point,PRJ)
            row = cur.newRow()
            row.Shape = geoPoint
            cur.insertRow(row)
            i += 1
    if len(PolylineList) != 0:
        i = 0
        cur = arcpy.InsertCursor(FC_Polyline.getOutput(0))
        geoPoint = arcpy.Point()
        while i < len(PolylineList):
            array = arcpy.Array()
            if str(type(Polyline_idxlist[i])) == "<type 'list'>":
                partCount = 0
                tmparray = arcpy.Array()
                while partCount < len(Polyline_idxlist[i]):
                    pline = geomlines[Polyline_idxlist[i][partCount][0]:Polyline_idxlist[i][partCount][1]+1]
                    for point in pline:
                        geoPoint.X = float(point.split()[0])
                        geoPoint.Y = float(point.split()[1])
                        tmparray.add(geoPoint)
                    array.add(tmparray)
                    tmparray.removeAll()
                    partCount += 1
            else:
                pline = geomlines[Polyline_idxlist[i][0]:Polyline_idxlist[i][1]+1]
                for point in pline:
                    geoPoint.X = float(point.split()[0])
                    geoPoint.Y = float(point.split()[1])
                    array.add(geoPoint)

            geoLine = arcpy.Polyline(array,PRJ)
            row = cur.newRow()
            row.Shape = geoLine
            cur.insertRow(row)
            i += 1

    if len(PolygonList) != 0:
        i = 0
        cur = arcpy.InsertCursor(FC_Polygon.getOutput(0))
        geoPoint = arcpy.Point()
        while i < len(PolygonList):
            array = arcpy.Array()
            if str(type(Polygon_idxlist[i])) == "<type 'list'>":
                partCount = 0
                tmparray = arcpy.Array()
                while partCount < len(Polygon_idxlist[i]):
                    pline = geomlines[Polygon_idxlist[i][partCount][0]:Polygon_idxlist[i][partCount][1]+1]
                    FirstPoint = arcpy.Point(float(pline[0].split()[0]),float(pline[0].split()[1]))
                    for point in pline:
                        geoPoint.X = float(point.split()[0])
                        geoPoint.Y = float(point.split()[1])
                        tmparray.add(geoPoint)
                    tmparray.add(FirstPoint)
                    array.add(tmparray)
                    tmparray.removeAll()
                    partCount += 1
            else:
                pline = geomlines[Polygon_idxlist[i][0]:Polygon_idxlist[i][1]+1]
                FirstPoint = arcpy.Point(float(pline[0].split()[0]),float(pline[0].split()[1]))
                for point in pline:
                    geoPoint.X = float(point.split()[0])
                    geoPoint.Y = float(point.split()[1])
                    array.add(geoPoint)
                array.add(FirstPoint)
            geoPolygon = arcpy.Polygon(array,PRJ)
            row = cur.newRow()
            row.Shape = geoPolygon
            cur.insertRow(row)
            i += 1

del row,cur



