ジオデータベースおよびシェープファイルでの文字エンコーディングのサポート


11

多くの属性にギリシャ文字を含むフィーチャクラスを含むジオデータベースがいくつかあります。フィーチャクラスをシェープファイルとしてArcCatalogからエクスポートしようとすると、属性がシェープファイルデータで何らかの文字エンコードの問題で処理されます(シェイプでは次のようになります:?? etr ?? e?)。FWtoolsでogr2ogrを使用してMDBからKML、shpなどにレイヤーを変換するときにも同じことが起こります。

GISデータ形式全体でエンコード形式を処理しようとした経験はありますか?

ここでの本当の目標は、これらのEsriジオデータベースからPostgres / PostGISデータベースにデータを取得することですが、エンコードが壊れても機能しません。geoDBからシェープファイルにエクスポートし、でそれらをロードしますshp2pgsql。それはそこに到達する最も簡単な道ですか?


2
あなたはCP1256オプションでshapfileをインポートし、非Unicodeの問題を回避するためにUTF8でそれをエクスポートするQGISを使用することができます

回答:


10

あなたはそこにいると思います。iconvあるエンコーディングから別のエンコーディングに変換するために使用でき、shp2pgsqlプロセスの一部としてこれを使用できます。例えば:

shp2pgsql *postgrestablename* | iconv -f *sourceencoding* -t *targetencoding* | psql -d *yourdatabase*

Linux環境で作業している場合は、iconv既にインストールされているはずです。Windowsの場合、LibIconv for Windowsが見つかりました。しかし、私はiconvWindows で使用した経験がないので、それを保証することはできません。

お役に立てれば!

ジョー


この問題は、shp2pgsqlを適用する前に発生します。正しく理解すれば、シェープファイルの属性はすでに壊れています。
暗闇


暗闇、あなたは正しい。shp2pgsqlステップに進む前に、データが不良です。
コールマン

おかげで、mwalker ...そのソリューションは、これまでのところ素晴らしく機能しました!CodePage形式をUTF-8に変更すると、シェープファイルのDBFデータに正しい文字が表示されるようになりました。また、QGISのPostGISシェープファイルローダーを使用すると、PostGISデータベースのデータも正確です。
コールマン

6

アラビア語フィールドのあるファイルGeoDataBaseを、アラビア語と英語の両方を正しく表示するQGISとArcMapの両方で正常に開くUTF-8エンコーディングのシェープファイルに変換するために使用したプロセスの詳細の下(エクスポートまたは読み取りに拡張機能を使用せずに):

  • 基本的な考え方は次のとおりです。FGDBから.dbfを含むシェープファイルを(間違ったエンコーディングで)エクスポートし、テキストと同じレイヤーの属性テーブルをエクスポートし(正しいエンコーディング、UTF-8)、別のプログラムを使用しますシェープファイルの.dbfの内容を適切なUTF-8データフィールドに置き換え、.dbfをUTF-8エンコーディングで保存します。次に、各シェープファイルに.cpgファイルを追加して、.dbfの新しいエンコーディングをArcGISに通知します。手順:

1)FGDBからArcMapにレイヤーを追加します(10.1を使用しましたが、エンコードビットがArcの外部で後で発生するため、以前のバージョンで動作しない理由はまったくありません)。エクスポートするには、レイヤーを右クリックして[データ]-> [データのエクスポート]を選択し、エクスポートダイアログのフォルダーボタンをクリックして[保存]ダイアログを表示し、出力形式として[シェープファイル]を選択します。

1b)上記の代替方法:ArcCatalogでFGDBに移動し、右クリックして、[エクスポート]-> [シェープファイルへ(複数)]を選択し、FGCB全体を1回の操作でシェープファイルでいっぱいのフォルダとしてエクスポートします。

2)これで、アラビア語のスクリプトがあるはずの場所で、意味不明なシェープファイルのセットができました(私のマシンでは、文字の代わりに疑問符が表示されました)。Excelなどで開いたシェープファイル自体の.dbf部分は、アラビア語ではなくちらつきがあります。これは、GISプログラムの単なる表示の問題ではなく、.dbfファイル自体にアラビア語の文字が含まれていないということです。まだ役に立たない。

3)ArcMapで、FGDBからレイヤーの属性テーブルを開きます。テーブルが開き、英語とアラビア語の両方が適切に表示されます(そのため、FGDBが最初に使用された理由です)。[属性テーブル]ウィンドウの[テーブルオプション]メニューで[エクスポート]を選択し、[データのエクスポート]ダイアログで[出力フォルダー]ボタンをクリックして[データの保存]ダイアログに移動します。これで、英語とアラビア語の両方が適切にエンコードされた、UTF-8としてエンコードされたコンマ区切り文字付きのメモ帳で開くテキストファイルができました(この時点でアラビア語はメモ帳で正しく表示されるはずです)。

次に、その情報をシェープファイルの.dbf部分に取り込みます!

4)LibreOffice Calcを開きます。これは、シェープファイルの.dbfファイルを開くために、.dbfファイルを簡単に開いて操作し、保存する無料のオープンソースExcelクローンです。

ところで、この場合、イデオロギー上の理由でMS Officeの代わりにLibreOfficeを使用していませんが、Excelで.dbfファイルを保存する方法がわからないためです。 Calcで.dbfファイルを開いて変更した後に[保存]を押すと、Excelが実際にファイルを「現在の形式で保存できない」と表示し、「最新の形式として保存する」というあまり役に立たないというデフォルトオプション(.dbfのオプションは表示されません)。仕事をすることを目的とするExcel用の拡張機能/プラグインがあります(

Calcの.dbfファイルには、アラビア語の代わりに意味不明な表現が残っています。それと並行して、同じシェープファイルの属性テーブルからエクスポートした.csvを開き、開始ダイアログでエンコーディングとしてUTF-8(および区切り文字としてコンマ)を指定していることを確認します。テキストファイルは、アラビア語が正しく表示された2番目のCalcスプレッドシートで開き、.dbfと同じ列と、先頭にOBJECTID列が含まれている必要があります。適切なアラビア語を含む.csvから.dbfに列をコピーアンドペーストします(実際には、時間を節約するために左端のID列を除いてテーブル全体をコピーアンドペーストしました。情報は同じです)。LibreOfficeの変更された.dbfで[保存]をクリックします(.dbfのような奇妙な形式を本当に使用するかどうかを尋ねられます。そうです)。

FGDBのシェープファイルのすべての.dbfコンポーネントについてこのプロセスを繰り返し、すべての意味不明な列をアラビア語の文字列に置き換えます。

5)アラビア語の列を貼り付けた.dbf部分を再保存するとすぐに、QGISでシェープファイルを開くことができます。インポートベクトルでエンコードとしてUTF-8を指定していれば、両方の言語で正しく機能しますファイルダイアログ。ただし、ArcGISはエンコーディングを自動的に認識せず、シェープファイルをプロジェクトに追加するときに選択を許可しないため、ArcGISでは(または少なくともすべてのバージョンで)適切に機能しません。Arcは、読み込むエンコードを指示するために、コードページ変換(.cpg)ファイルと呼ばれる、シェープファイルに別のコンポーネントを必要とします。

6)テキストエディタ(メモ帳、nanoなど)を使用して、Wordやその他のワードプロセッサは使用しないで、「UTF-8」という5文字のみを含むテキストファイルを作成します。シェープファイルごとに.cpgとして保存します([名前を付けて保存]ダイアログでシェープファイルの一部をクリックし、拡張子を消去して.cpgを追加します)。マルチパートシェープファイル)。.cpg拡張子は、これが.dbfファイルのエンコードに関する情報を含むファイルであることをArcに伝えます。同じ名前だが異なる拡張子の兄弟と共にシェープファイルにバンドルされると、シェープファイルのエンコードはArcGISによって自動的に認識されるようになります。

7)出来上がり。これで、元のファイルGeoDataBaseにあったものと正確に区別できる限り、英語とアラビア語の両方の文字列を含むシェープファイルが作成されました。私のArcMapとQGISの両方のインストールで開きます。どちらの場合も、両方の言語の文字列はマップラベルを含めて正しく表示されます。

警告:

  • ArcGISのすべてのコピーが、適切に入力されたテキストファイルとして属性テーブルをエクスポートするように見えません(少なくとも1台のコンピューターで、属性テーブルをテキストファイルにエクスポートしようとすると、データ行ではなくヘッダーのみを持つファイルになります。これはArcの適切な動作ではありません(もちろん、属性テーブルをテキストとしてエクスポートできるはずです)が、一部のユーザーには表示される可能性があります。

  • ArcGISが新しいシェープファイルをUTF-8エンコードで保存するようには見えません。これは、データから新しいシェープファイルを作成するユーザーにのみ影響し、マップを作成するためにそれらを表示、変更、および使用するだけのユーザーには影響しません。回避策は、ここで詳しく説明されているように、Windowsレジストリをいじる必要があるようです(http://support.esri.com/cn/knowledgebase/techarticles/detail/21106)。ArcGISとQGISの両方が上記のプロセスを使用して保存したシェープファイルを喜んで認識しているように見えるため、対処する必要はありませんでした。 Arcは新しいシェープファイルをUTF-8エンコーディングで保存したくないように見えますが、それらを更新/再保存してもかまいません)。

  • LibreOfficeの機能は、Windowsでもコンピューターと同じであると想定しています。私はほとんどの作業にGNU / Linuxを使用し、何らかのタスクなどにArcGISまたはAutocadを使用する必要がある場合にのみWindowsを起動するため、Fedoraで実行されているLibreofficeで.dbfファイルを変更しました。Windowsでも同じように動作すると思いますが、WindowsパーティションにLibreOfficeをインストールせずにテストすることはできません。現在のインターネット接続は、不要なダウンロードでは少し遅くなります。選択したエンコード(たとえば、exceltodbf.sourceforge.net /)で.dbfファイルを保存できるExcel用のプラグインがありますが、試していません。.dbfを操作して保存する方法は他にもあるかもしれませんが、LibreOfficeを使用してそれを行うための合理的な簡単な方法を見つけた後、私はそれらを調べていません。

  • あなたは直接エンコードするこのページによるとUTF-8でシェープファイルにFGDBsを変換することができますArcGISで生産マッピング延長、のために払っているのであれば、全体の問題は回避のようだ:http://resources.arcgis.com/en/help /main/10.1/index.html#//0103000001m1000000。このかなり基本的な機能(Unicodeはしばらく前から存在し、英語以外にも多くの言語が出回っている)が、追加料金を支払う顧客のみが利用できる理由は、ESRIの疑問です。


0

最初に入力データのエンコーディングが何であるかを把握する必要があります。そのため、データを適切なエンコーディングに変換する方法をツールに伝えることができます。Accessがある場合、テーブルをMDBから直接テキストにエクスポートして、出力エンコードをUTF8に設定してみます。エクスポートされたシェープファイルをArcGISで開いた場合、エンコードは正しく設定されていますか?DBF はコードページをサポートしており、OGRが変換のために正しいページを選択していない可能性があります。

(OGRドライバーの一部として使用される)MDBtoolsを強制的に入力ストリームを明示的に設定する方法もありますが、他の方法を最初に試してみます。


0

私はむしろArcGISの方法に行きます。ここからの指示に従って、ArcGISでエンコードをUTF-8に設定するだけです。この後、フィーチャクラスをShapeFileにエクスポートするだけです。これで、各レイヤーに追加のCPG(コードページファイル)ファイルが追加されます。これは、文字列「UTF-8」を含むテキストファイルのみで、すべてのデータは自動的にUTF-8にエンコードされます。

他のエンコードを使用したい場合は、手順を参照してください。

重要なことは、この割り当てを完了した後、この設定をデフォルト値に変更する必要があるためです。たとえば、この値を「UTF-8」のままにすると、今後ArcGISは「UTF-8」エンコーディングを使用してすべてのShapeFilesをエクスポートします

それがあなたを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.