亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? miffile.java

?? .mif .mid file read and write
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
     * Reads the header from the given MIF file stream tokenizer
     *
     * @param skipRead Skip the header, just to get to the data section
     * @param mif
     *
     * @throws IOException
     * @throws SchemaException Error reading header information
     */
    private void readMifHeader(boolean skipRead, MIFFileTokenizer mif)
        throws IOException, SchemaException {
        try {
            String tok;
            boolean hasMifText = false;
            AttributeDescriptor[] columns = null;

            while (mif.readLine()) {
                tok = mif.getToken().toLowerCase();

                // "data" might be a field name, in this case the type name would follow on the same line 
                if (tok.equals("data") && mif.getLine().equals("")) {
                    break;
                }

                if (skipRead) {
                    continue;
                }

                if (tok.equals(MIFDataStore.HCLAUSE_VERSION)) {
                    setHeaderClause(MIFDataStore.HCLAUSE_VERSION, mif.getLine());

                    continue;
                }

                if (tok.equals(MIFDataStore.HCLAUSE_CHARSET)) {
                    setHeaderClause(MIFDataStore.HCLAUSE_CHARSET,
                        mif.getToken(' ', false, true));

                    continue;
                }

                if (tok.equals(MIFDataStore.HCLAUSE_DELIMITER)) {
                    setHeaderClause(MIFDataStore.HCLAUSE_DELIMITER,
                        mif.getToken(' ', false, true));
                    chDelimiter = getHeaderClause(MIFDataStore.HCLAUSE_DELIMITER)
                                      .charAt(0);

                    continue;
                }

                if (tok.equals(MIFDataStore.HCLAUSE_UNIQUE)) {
                    setHeaderClause(MIFDataStore.HCLAUSE_UNIQUE, mif.getLine());

                    continue;
                }

                if (tok.equals(MIFDataStore.HCLAUSE_COORDSYS)) {
                    setHeaderClause(MIFDataStore.HCLAUSE_COORDSYS, mif.getLine());

                    continue;
                }

                if (tok.equals(MIFDataStore.HCLAUSE_INDEX)) {
                    setHeaderClause(MIFDataStore.HCLAUSE_INDEX, mif.getLine());

                    continue;
                }

                if (tok.equals(MIFDataStore.HCLAUSE_TRANSFORM)) {
                    useTransform = true;
                    multX = Float.parseFloat("0" + mif.getToken(','));
                    multY = Float.parseFloat("0" + mif.getToken(','));
                    sumX = Float.parseFloat("0" + mif.getToken(','));
                    sumY = Float.parseFloat("0" + mif.getToken(','));

                    if (multX == 0) {
                        multX = 1;
                    }

                    if (multY == 0) {
                        multY = 1;
                    }

                    continue;
                }

                if (tok.equals(CLAUSE_COLUMNS)) {
                    int cols;

                    try {
                        cols = Integer.parseInt(mif.getLine());
                    } catch (NumberFormatException nfexp) {
                        throw new IOException("bad number of colums: "
                            + mif.getLine());
                    }

                    // Columns <n> does not take into account the geometry column, so we increment
                    columns = new AttributeDescriptor[++cols];

                    String name;
                    String type;
                    Object defa;
                    Class typeClass;
                    int size;

                    for (int i = 1; i < cols; i++) {
                        if (!mif.readLine()) {
                            throw new IOException("Expected column definition");
                        }

                        name = mif.getToken();

                        if (fieldNameCase.equalsIgnoreCase("upper")) {
                            name = name.toUpperCase();
                        } else if (fieldNameCase.equalsIgnoreCase("lower")) {
                            name = name.toLowerCase();
                        }

                        type = mif.getToken('(').toLowerCase();
                        defa = null;
                        typeClass = null;
                        size = 4;

                        if (type.equals("float") || type.equals("decimal")) {
                            typeClass = Double.class;
                            size = 8;
                            defa = new Double(0.0);

                            // TODO: check precision?
                        } else if (type.startsWith("char")) {
                            typeClass = String.class;
                            size = Integer.parseInt(mif.getToken(')'));
                            defa = "";
                        } else if (type.equals("integer")
                                || type.equals("smallint")) {
                            typeClass = Integer.class;
                            defa = new Integer(0);

                            // TODO: apply a restriction for Smallint (value between -32768 and +32767)
                        } else if (type.equals("logical")) {
                            typeClass = Boolean.class;
                            size = 2; // ???
                            defa = new Boolean(false);
                        } else if (type.equals("date")) {
                            typeClass = Date.class; // MapInfo format: yyyymmdd
                            size = 4; // ???
                            defa = null; // Dates are "nillable" (like Strings can be empty)
                        } else {
                            LOGGER.fine("unknown type in mif/mid read " + type
                                + " storing as String");
                            typeClass = String.class;
                            size = 254;
                            defa = "";
                        }

                        
                        AttributeTypeBuilder b = new AttributeTypeBuilder();
                        b.setName(name);
                        b.setBinding(typeClass);
                        b.setNillable(defa == null);
                        b.setDefaultValue(defa);
                        
                        
                        // Apart from Geometry, MapInfo table fields cannot be null, so Nillable is always false and default value must always be provided!
                        columns[i] = b.buildDescriptor(name);
                    }
                }
            }

            // Builds schema if not in skip mode...
            if (!skipRead) {
                Class geomType = null;

                String geomClass = geometryClass.toLowerCase();

                if (geomClass.equals("untyped")) {
                    geomType = Geometry.class;
                } else if (geomClass.equals("typed")) {
                    toGeometryCollection = false;
                } else if (geomClass.equals("multi")) {
                    toGeometryCollection = true;
                } else if (geomClass.equals("point")) {
                    geomType = Point.class;
                } else if (geomClass.equals("text")) {
                    geomType = Point.class;
                    hasMifText = true;
                } else if (geomClass.equals("linestring")) {
                    geomType = LineString.class;
                } else if (geomClass.equals("multilinestring")) {
                    geomType = MultiLineString.class;
                    toGeometryCollection = true;
                } else if (geomClass.equals("polygon")) {
                    geomType = Polygon.class;
                } else if (geomClass.equals("multipolygon")) {
                    geomType = MultiPolygon.class;
                    toGeometryCollection = true;
                } else {
                    throw new SchemaException("Bad geometry type option: "
                        + geomClass);
                }

                // Determine geometry type from the first non-null geometry read from mif file
                if (geomType == null) {
                    Reader reader = new Reader(mif, null);
                    Geometry geom = null;

                    while (!reader.mifEOF) {
                        geom = reader.readGeometry();
                        hasMifText = (!reader.mifText.equals(""));

                        if (geom != null) {
                            geomType = geom.getClass();

                            if (toGeometryCollection) {
                                if (geomType.isAssignableFrom(Polygon.class)) {
                                    geomType = MultiPolygon.class;
                                } else if (geomType.isAssignableFrom(
                                            LineString.class)) {
                                    geomType = MultiLineString.class;
                                }
                            }

                            break;
                        }
                    }

                    reader.close();
                    reader = null;
                }

                if (geomType == null) {
                    throw new SchemaException(
                        "Unable to determine geometry type from mif file");
                }

                AttributeTypeBuilder b = new AttributeTypeBuilder();
                b.setName(geometryName);
                b.setBinding(geomType);
                b.setNillable(true);
                
                
                columns[0] = b.buildDescriptor(geometryName);

                try {
                    String typeName = mifFile.getName();
                    typeName = typeName.substring(0, typeName.indexOf("."));

                    SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
                    builder.setName(typeName);

                    builder.setNamespaceURI(namespace);

                    for (int i = 0; i < columns.length; i++)
                        builder.add(columns[i]);

                    if (hasMifText) {
                    	b = new AttributeTypeBuilder();
                    	b.setName("MIF_TEXT");
                    	b.setBinding(String.class);
                    	b.setNillable(true);
                    	
                        builder.add(b.buildDescriptor("MIF_TEXT"));
                    }

                    setSchema(builder.buildFeatureType());
                } catch (SchemaException schexp) {
                    throw new SchemaException(
                        "Exception creating feature type from MIF header: "
                        + schexp.toString());
                }
            }
        } catch (Exception e) {
            throw new IOException("IOException reading MIF header, line "
                + mif.getLineNumber() + ": " + e.getMessage());
        }
    }

    /**
     * Returns the MIF schema
     *
     * @return the current FeatureType associated with the MIF file
     */
    public SimpleFeatureType getSchema() {
        return featureType;
    }

    /**
     * Sets the schema (FeatureType) and creates value setters and IO object
     * buffer
     *
     * @param ft
     *
     * @throws SchemaException The given FeatureType is not compatible with
     *         MapInfo format
     */
    private void setSchema(SimpleFeatureType ft) throws SchemaException {
        featureType = ft;

        numAttribs = featureType.getAttributeCount();
        geomFieldIndex = -1;

        // Creates the input buffer for reading MID file
        featureDefaults = new Object[numAttribs];

        for (int i = 0; i < featureType.getAttributeCount(); i++) {
            AttributeDescriptor at = featureType.getAttribute(i);

            Class atc = at.getType().getBinding();

            if (Geometry.class.isAssignableFrom(atc)) {
                if (geomFieldIndex >= 0) {
                    throw new SchemaException(
                        "Feature Types with more than one geometric attribute are not supported.");
                }

                if (i > 0) {
                    throw new SchemaException(
                        "Geometry must be the first attribute in schema.");
                }

                geomFieldIndex = i; // = 0
            }
        }

        MIFValueSetter[] tmp = getValueSetters();

        for (int i = 0; i < featureType.getAttributeCount(); i++) {
            if (i != geomFieldIndex) {
                tmp[i].setString("");
                featureDefaults[i] = tmp[i].getValue();
            }
        }
    }

    /**
     * Gets the ValueSetters
     *
     * @return An array of valueSetters to be used for IO operations
     *
     * @throws SchemaException An attribute of an unsupported type was found.
     */
    private MIFValueSetter[] getValueSetters() throws SchemaException {
        MIFValueSetter[] fieldValueSetters = new MIFValueSetter[numAttribs];

        for (int i = 0; i < featureType.getAttributeCount(); i++) {
            AttributeDescriptor at = featureType.getAttribute(i);
            Class atc = at.getType().getBinding();

            if (i == geomFieldIndex) {
                fieldValueSetters[i] = null;
            } else if (atc == Integer.class) {
                fieldValueSetters[i] = new MIFValueSetter("0") {
                            protected void stringToValue()
                                throws Exception {
                                objValue = new Integer(strValue);
                            }
                        };
            } else if (atc == Double.class) {
                fieldValueSetters[i] = new MIFValueSetter("0") {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆91在线播放免费| 亚洲一级二级在线| 国产一区二区三区精品欧美日韩一区二区三区 | 狠狠色丁香久久婷婷综| 欧美videofree性高清杂交| 国产一区中文字幕| 国产精品久久久久久久久久免费看| 国产乱码精品1区2区3区| 国产欧美一区二区三区在线老狼| 99久久久久免费精品国产| 综合久久一区二区三区| 欧美日韩国产在线观看| 精品一区二区三区在线观看| 久久久三级国产网站| 91视频.com| 青青国产91久久久久久| 欧美日韩成人综合天天影院| 蜜臀国产一区二区三区在线播放| 久久日韩精品一区二区五区| 91污在线观看| 日本美女一区二区三区视频| 国产日韩欧美制服另类| 欧美色综合网站| 国产在线不卡一区| 亚洲免费观看高清完整版在线观看 | 日本久久一区二区三区| 日日夜夜免费精品| 国产精品理论在线观看| 欧美精品乱码久久久久久按摩| 国产一区二区影院| 亚洲国产va精品久久久不卡综合| www成人在线观看| 欧美三区在线视频| 成人av在线看| 人人狠狠综合久久亚洲| 亚洲欧美激情在线| 久久久精品国产免费观看同学| 色综合久久久久久久久久久| 韩日av一区二区| 亚洲高清一区二区三区| 国产欧美精品一区二区色综合朱莉| 欧美性色欧美a在线播放| 国产成人亚洲精品青草天美| 亚洲一区二区视频| 最新日韩av在线| 欧美大片一区二区三区| 欧美日韩1234| 色噜噜久久综合| 国产传媒久久文化传媒| 老司机免费视频一区二区三区| 亚洲男人电影天堂| 国产精品成人网| 欧美激情综合在线| 久久午夜老司机| 欧美一区二区三区小说| 欧美日韩在线一区二区| 一本久久综合亚洲鲁鲁五月天| 国产精品自在欧美一区| 久久99精品国产91久久来源| 亚洲国产精品一区二区www| 亚洲欧美综合网| 中文字幕av资源一区| 国产日韩精品一区二区三区 | 亚洲成人在线免费| 亚洲精品视频免费观看| 亚洲手机成人高清视频| 国产精品久久久久久一区二区三区 | 欧美色视频在线| 91高清视频在线| 91视频观看免费| 色综合天天视频在线观看| 色综合网站在线| 色欧美片视频在线观看| 91国产免费看| 欧美色图免费看| 91精品国产入口| 91精品久久久久久久久99蜜臂 | 精品动漫一区二区三区在线观看| 51精品视频一区二区三区| 欧美日韩精品久久久| 欧美美女喷水视频| 日韩欧美中文一区| 精品少妇一区二区三区在线播放| 欧美成人性福生活免费看| 精品国产三级电影在线观看| 欧美精品一区二区三区蜜臀| 久久综合久久综合九色| 国产色91在线| 国产精品久久久久久久久免费丝袜| 国产精品不卡在线| 亚洲天堂精品在线观看| 亚洲成人动漫av| 免费精品99久久国产综合精品| 久久99精品国产91久久来源| 国产成人午夜片在线观看高清观看| 高清久久久久久| 欧美熟乱第一页| 日韩欧美久久久| 中文欧美字幕免费| 一区av在线播放| 青青草原综合久久大伊人精品优势| 国产在线精品一区在线观看麻豆| 丰满岳乱妇一区二区三区| 欧美综合欧美视频| 精品少妇一区二区三区免费观看 | 在线观看日韩电影| 欧美一区二区啪啪| 日本一区二区三区国色天香| 亚洲免费观看高清完整版在线观看 | 国产一区二区三区在线观看免费视频| 国产成人无遮挡在线视频| 色狠狠av一区二区三区| 精品日韩一区二区三区| 中文字幕中文字幕一区| 日韩精品一级中文字幕精品视频免费观看 | 国产欧美日韩综合| 亚洲小说欧美激情另类| 久久成人免费网| 一本一道久久a久久精品综合蜜臀| 制服丝袜亚洲精品中文字幕| 久久久91精品国产一区二区精品 | 欧美视频一区在线| 久久影院午夜论| 亚洲国产视频网站| 国产成人精品综合在线观看| 欧美日韩精品一区二区三区 | 粉嫩在线一区二区三区视频| 欧美午夜理伦三级在线观看| 久久久国产综合精品女国产盗摄| 亚洲国产精品久久一线不卡| 国产一区日韩二区欧美三区| 欧美日韩卡一卡二| 亚洲色图视频免费播放| 精品一区二区三区久久| 欧美日韩国产精选| 亚洲欧美区自拍先锋| 国产呦萝稀缺另类资源| 91麻豆精品国产自产在线| 亚洲黄色av一区| 91在线视频官网| 国产精品入口麻豆九色| 久久精品99久久久| 欧美精选一区二区| 亚洲精品高清视频在线观看| 成人精品视频网站| 久久―日本道色综合久久| 丝袜亚洲另类欧美| 欧美吻胸吃奶大尺度电影| 亚洲天堂免费看| 不卡免费追剧大全电视剧网站| 久久久久久久久久久久电影| 日韩国产成人精品| 欧美电影影音先锋| 亚洲成人av福利| 欧美手机在线视频| 亚洲午夜电影在线观看| 色一情一乱一乱一91av| 中文字幕视频一区| eeuss鲁片一区二区三区 | 精品国产亚洲一区二区三区在线观看| 亚洲国产另类av| 欧美久久一二区| 亚洲第一激情av| 欧美丰满一区二区免费视频| 亚洲一本大道在线| 欧美高清性hdvideosex| 亚洲va韩国va欧美va| 欧美日韩在线电影| 日韩精品1区2区3区| 9191精品国产综合久久久久久| 亚洲国产精品久久人人爱| 欧美午夜电影一区| 亚洲成av人片一区二区| 欧美精品国产精品| 青青草成人在线观看| 日韩欧美在线综合网| 精品在线播放免费| 久久精品男人的天堂| 成人激情黄色小说| 日韩美女精品在线| 欧美午夜一区二区三区| 日本中文字幕一区| 日韩美女视频在线| 国产激情视频一区二区在线观看| 国产精品视频观看| 色婷婷一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品精品国产高清a毛片牛牛 | 麻豆精品一二三| 久久综合色天天久久综合图片| 成人国产电影网| 亚洲黄色免费网站| 日韩精品专区在线影院观看| 国产一区二区日韩精品| 中文字幕高清一区| 欧美日韩一区二区三区高清| 美国毛片一区二区三区| 国产精品免费aⅴ片在线观看| 在线观看日韩高清av| 国产一区久久久|