GDAL/OGR を使用して、.mif/.tab ファイルからデータベースにデータを書き込むプロジェクトを作成しようとしています。そうです:
SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(dbFeatureType);
SimpleFeatureCollection collection = FeatureCollections.newCollection();
while (mifReader.hasNext()){
in = (SimpleFeatureImpl) mifReader.next();
SimpleFeature dbFeature = featureBuilder.buildFeature(null);
for(AttributeDescriptor ad : adList){
String name = ad.getLocalName();
Object attrValue;
attrValue = in.getAttribute(name);
if(attrValue instanceof String){
String string3 = new String((attrValue.toString()).getBytes("ISO-8859-1"), "cp1251");
if(name.trim().equalsIgnoreCase(kadname.trim())){
dbFeature.setAttribute("kadnum", string3);
}
}
if (attrValue instanceof Geometry){
idn++;
com.vividsolutions.jts.geom.Geometry geom = (Geometry) in.getAttribute(name);
dbFeature.setAttribute("id", idn);
System.out.println("after insrt="+idn);
dbFeature.setAttribute("deleted", deleted);
dbFeature.setAttribute("the_geom", geom);
dbFeature.setAttribute("status_id", status_id);
}
collection.add(dbFeature);
}
}
.mid ファイルからの単純なデータ:
__id_|___kadnum_____
3,"66:2:00:88 951"
4,"66:2:00:88 952"
5,"66:2:00:88 954"
そして、dbで私はこれを取得します:
私のデータは2〜4行です。インクリメント変数idn
を取得し、それを属性に入れていることがわかりますid
。kadnum
from .mid を取得し、それを attribute に入れますkadnum
。
その問題はありませんが、bd では行が間違った順序で取得されます。つまり、属性を持つ要素kadnum=66:2:00:88 951
は db の 2 行目にありますが、4 行目にあります。
コレクション内のアイテムの順序を逆に変更するということです。その正しい解決策は?そして、これを行う方法は?または、GDALは自分でそれを行うことができますか?
アップデート
私は持っている:
SimplePropertyImpl in =(SimpleFeatureImpl) mifReader.next();
私は試します:
in.getProperty("id").getName() ;
そして、PropertyName を取得しません。文字列を取得します。私は何を間違っていますか?