問題タブ [spatialite]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - OS X に Python 用 Spatialite (GeoDjango) をインストールする
GeoDjango 用の Spatialite をインストールしようとして、髪をかきむしっています。
私はすでに Homebrew を使用しています。これは一般的に簡単で便利なので、最初はGeoDjangoのHomebrew の指示に従おうとしました。
しかし、これは、Spatialite などのデータベースをインストールするまでには至りません。次のステップは、Spatialite 自体を試してインストールすることですが、Django ドキュメントで提供される Homebrew 固有の手順はありません。
完璧に見えるこのチュートリアルを見つけました.GeoDjango用のSpatialiteのHomebrewおよびvirtualenvフレンドリーなインストールです。
しかし、うまくいきません... pysqlite
Homebrewからインストールした空間化されたものではなく、OS Xに付属する非空間対応バージョンのSQLiteにリンクされているようです.Djangoが試したときにこのエラーが発生しましたデータベースに接続するには:
「pysqlite ライブラリは C 拡張機能の読み込みをサポートしていません。SpatiaLite を使用するには、拡張機能の読み込みを許可するように SQLite と pysqlite の両方を構成する必要があります。」
pysqlite の作成者は、Github での助けを求める私の嘆願に応答しておらず、Google からも何も見つかりませんでした。
そこで私は製図板に戻り、GeoDjango ドキュメントの「Mac OS X 固有の手順」に従うことにしました... KyngChaos バイナリ パッケージからさまざまな geo ライブラリをインストールすることによって。
UnixImageIO
ドキュメントには「パッケージを上記の順序でインストールする」と書かれていますが、最初にインストールしないとインストールできないことがわかりましたPROJ
。Spatialite バイナリをダウンロードするためのドキュメントのリンク ( http://www.gaia-gis.it/spatialite-2.3.1/binaries.html ) が壊れているため、代わりに KyngChaos の「Spatialite Tools v4.1」を使用しました。
次のステップに進むと、次のエラーが表示されます。
この時点で何が問題なのかよくわかりません。
ここSOには、 KyngChaosルートをたどり、Homebrewルートから得た同じ「拡張機能のロードを許可するには、SQLiteとpysqliteの両方を構成する必要があります」というエラーが発生する人がいます。
Django へのサポートを追加するためのこのチケット #17756を見つけました - これはすべてを簡単に実行できるはずですが、残念ながらどちらも機能しません (チケットの下部にあるコメントを参照してください)。pyspatialite
pyspatialite
pip install
ソースからすべてを手動でビルドしようとするのは少し気が進まないので、同じ問題に再び遭遇する可能性が高いと思われますが、途中で不可解なコンパイラエラー、魔法のフラグ、パスなどに関する情報をグーグルで検索するのに何時間も費やしています.
私はあきらめて、Postgres/PostGIS を使用する準備ができています。
ios - iOS での SQLite (Spatialite) クエリは 64 ビット シミュレータで動作しますが、それ以外は機能しません
Django 管理コマンドによって生成された Spatialite データベースがあり、これを iOS アプリに埋め込んでいます。データベースは完全に開きますが、iOS でのデータベースのクエリは、64 ビット デバイスで実行している場合にのみ機能することがわかりました。シミュレートされているかどうかに関係なく、その他のデバイスは、 のSQLITE_NOTADB
呼び出しsqlite3_prepare_v2
時にエラー メッセージ とともに出力を生成しますfile is encrypted or is not a database
。
明らかに、このデータベースを作成した Mac は 64 ビット マシンですが、SQLite データベースはビットにとらわれない必要があるため、これがどのように問題になるのかわかりません。おそらく、これは Spatialite データベースには当てはまりませんか? 64 ビット アーチ iOS と同じ方法でファイルを読み取るために、SQLite 関数 (またはコマンド)で使用できるフラグはありますsqlite3_open
か? それとも、django からよりプラットフォーム互換性のある形式で Spatialite db を生成する方法があるのでしょうか? ここでの提案は大歓迎です。sqlite3_prepare_v2
pragma
誰かが明らかな問題を見つけることができる場合、これが私のコードのスニペットです:
アプリを起動し、64 ビット以外の iOS プラットフォームで実行するとgetLockupsForRegion:
、ログ出力が生成されます。
そして、arm64 の下のログ出力:
バージョン:
- パイソン: 2.7.5
- ジャンゴ: 1.6
- PySqlite: 2.6.3
- Sqlite (Spatialite db を生成するマシン上): 3.8.1
- Spatialite (Spatialite db を生成するマシン上): 4.1.1
- Sqlite (iOS): 3.8.1
- Spatialite (iOS): 4.1.1
これに関する提案は大歓迎です!
nosql - Spatialite が NoSQL データベースと見なされるかどうかを知りたいですか?
Spatialite が NoSQL データベースと見なされているかどうかを知りたいです。
NoSQLとは?
NoSQL は多種多様なデータベース テクノロジを網羅しており、ユーザー、オブジェクト、および製品に関して保存されるデータ量の増加、このデータへのアクセス頻度、およびパフォーマンスと処理のニーズに対応して開発されました。一方、リレーショナル データベースは、最新のアプリケーションが直面する規模と俊敏性の課題に対処するように設計されておらず、現在利用可能な安価なストレージと処理能力を活用するように構築されていません。
NoSQL データベースの種類
ドキュメント データベースは、各キーをドキュメントと呼ばれる複雑なデータ構造とペアにします。ドキュメントには、さまざまなキーと値のペア、キーと配列のペア、またはネストされたドキュメントを含めることができます。
グラフ ストアは、ソーシャル コネクションなどのネットワークに関する情報を格納するために使用されます。グラフ ストアには、Neo4J と HyperGraphDB が含まれます。
キー値ストアは、最も単純な NoSQL データベースです。データベース内のすべてのアイテムは、その値とともに属性名 (または「キー」) として格納されます。キー値ストアの例は、Riak と Voldemort です。Redis などの一部のキー値ストアでは、各値に「整数」などの型を持たせることができ、機能が追加されます。
Cassandra や HBase などの幅の広い列のストアは、大規模なデータセットに対するクエリ用に最適化されており、行ではなくデータの列を一緒に格納します。
NoSQL の利点
リレーショナル データベースと比較すると、NoSQL データベースはよりスケーラブルで優れたパフォーマンスを提供し、そのデータ モデルは、リレーショナル モデルが対処するように設計されていないいくつかの問題に対処します。
大量の構造化データ、半構造化データ、非構造化データ アジャイル スプリント、迅速なイテレーション、頻繁なコード プッシュ 使いやすく柔軟なオブジェクト指向プログラミング 高価なモノリシック アーキテクチャに代わる効率的なスケールアウト アーキテクチャ
c++ - Spatialite に関する問題の構築
Ubuntu 12.04 で Spatialite 4.1.1 をビルドしようとしています。ビルド中に次のビルド エラーが発生します。
virtualXL.c: 関数 'vXL_create' 内: virtualXL.c:264:3: エラー: 不明な型名 'FreeXL_CellValue' virtualXL.c:265:3: 警告: 互換性のないポインター型から 'freexl_get_cell_value' の引数 4 を渡しています [によって有効化されましたデフォルト] /usr/include/freexl.h:202:24: 注: 'unsigned char *' が予期されますが、引数の型は 'int *' です virtualXL.c:265:3: エラー: 関数 'freexl_get_cell_value' への引数が少なすぎます/usr/include/freexl.h:202:24: 注: ここで宣言された virtualXL.c:270:17: エラー: メンバー 'type' の要求が構造体または共用体ではない virtualXL.c:271:39: エラー:構造体または共用体ではない virtualXL.c:272:22 のメンバー 'value' の要求: エラー: 構造体または共用体ではない何かのメンバー 'type' の要求 virtualXL.c:275:17: エラー: メンバー ' の要求価値'構造体または共用体ではない virtualXL.c:276:22: エラー: メンバー 'type' の要求が構造体または共用体ではない virtualXL.c:277:18: エラー: メンバー 'type' の要求が構造体または共用体 virtualXL.c:277:18 ではない構造体または共用体 virtualXL.c:278:18: エラー: 構造体または共用体 virtualXL ではないメンバー 'type' の要求.c:279:18: エラー: 構造体または共用体 virtualXL ではないメンバー 'type' の要求.c:280:18: エラー: 構造体または共用体 virtualXL ではないメンバー 'type' の要求.c:282:30: エラー: 構造体または共用体 virtualXL ではないメンバー '値' の要求.c:286 :16: エラー: メンバー 'value' の要求が構造体または共用体ではない virtualXL.c: 関数 'vXL_eval_constraints' 内: virtualXL.c:505:5: エラー: 不明な型名 'FreeXL_CellValue' virtualXL.c:551:10: 警告: 互換性のないポインター型から 'freexl_get_cell_value' の引数 4 を渡しています [デフォルトで有効] /usr/include/freexl.h:202:24: 注: 'unsigned char *' が予期されますが、引数の型は 'int *' virtualXL.c:551:10: エラー: 関数 'freexl_get_cell_value' への引数が少なすぎます /usr/include/freexl.h:202:24: 注: ここで宣言されている virtualXL.c:553:12 : エラー: メンバー 'type' の要求が構造体または共用体 virtualXL.c:554:12 ではない: エラー: メンバー 'type' の要求が構造体または共用体 virtualXL.c:561:16 ではない: 要求構造体または共用体ではない virtualXL.c:565:16 内のメンバー 'value' の場合: エラー: 構造体または共用体 virtualXL.c:569:16 でないもの内のメンバー '値' の要求: エラー: メンバー ' の要求構造体または共用体ではない virtualXL.c:573:16: エラー: メンバー 'value' の要求が構造体または共用体の virtualXL.c:577:16 ではない: エラー: メンバー 'value' の要求が何かで構造体または共用体ではない virtualXL.c:587:16: エラー: 構造体または共用体ではないものでのメンバー '値' の要求。ユニオン virtualXL.c:595:16: エラー: 構造体またはユニオン virtualXL.c ではないメンバー 'value' の要求:603:16: エラー: メンバー 'value' の要求が構造体または共用体 virtualXL.c:609:12 ではない: エラー: メンバー 'type' の要求が構造体または共用体 virtualXL.c ではない:616:16: エラー: 構造体または共用体 virtualXL.c:620:16 ではないメンバー 'value' の要求: エラー: 構造体または共用体 virtualXL.c:624:16 ではないメンバーの要求エラー: 構造体または共用体 virtualXL.c:628:16 ではないメンバー 'value' の要求: エラー: 構造体または共用体 virtualXL.c:632:16 ではないメンバー '値' の要求: エラー: 要求メンバー 'value' が構造体または共用体 virtualXL.c:642:16 ではない: エラー: メンバー 'value' の要求が構造体または共用体 virtualXL.c:646:16 ではない: エラー: メンバー 'value' の要求構造体または共用体ではない virtualXL.c:650:16: エラー: メンバー 'value' の要求が、構造体または共用体ではない virtualXL.c:654:16: エラー: メンバー 'value' の要求構造体または共用体ではない virtualXL.c:658:16: エラー: メンバー 'value' の要求が構造体または共用体ではない virtualXL.c:664:13: エラー: メンバー 'type' の要求が構造体または共用体ではない構造体または共用体 virtualXL.c:665:16: エラー: 構造体または共用体 virtualXL ではないメンバー 'type' の要求.c:666:16: エラー: 構造体または共用体 virtualXL ではないメンバー 'type' の要求.c:667:16: エラー: 構造体または共用体 virtualXL ではないメンバー 'type' の要求.c:668:16: エラー: 構造体または共用体 virtualXL ではないメンバー 'type' の要求.c:670 :13: エラー: 構造体または共用体 virtualXL.c:670:13 ではないメンバー 'value' の要求: エラー: 構造体または共用体 virtualXL.c:670:13 ではないメンバーの要求:構造体または共用体 virtualXL.c:670:13 ではないメンバー 'value' の要求: エラー: 構造体または共用体 virtualXL.c:670:13 ではないメンバー 'value' の要求: エラー: メンバー ' の要求構造体または共用体ではない virtualXL.c:670:13: エラー: メンバー 'value' の要求が構造体または共用体ではない virtualXL.c:670:13: エラー: メンバー 'value' の要求が何かで構造体または共用体ではない virtualXL.c:670:13: エラー: 構造体または共用体ではないメンバー '値' の要求。ユニオン virtualXL.c:670:13: エラー: 構造体またはユニオン virtualXL.c:670:13 ではないメンバー '値' の要求構造体または共用体ではない virtualXL.c:670:13: エラー: メンバー 'value' の要求が構造体または共用体ではない virtualXL.c:670:13: エラー: メンバー 'value' の要求が構造体または共用体ではない構造体または共用体の virtualXL.c:670:13: エラー: 構造体または共用体の virtualXL.c:670:13 ではないメンバー 'value' の要求: 構造体または共用体の virtualXL ではないメンバーの要求.c:670:13: エラー: メンバー 'value' の要求が構造体または共用体 virtualXL ではない.c:670:13: エラー: メンバー 'value' の要求が構造体または共用体 virtualXL ではない.c:670 :13: エラー: 構造体または共用体 virtualXL.c:670:13 ではないメンバー 'value' の要求: エラー: 構造体または共用体 virtualXL.c:670:13 ではないメンバーの要求エラー: 構造体または共用体ではないメンバー '値' の要求 virtualXL.c: 関数 'vXL_column': virtualXL.c:804:5: エラー: 不明な型名 'FreeXL_CellValue' virtualXL.c:819:11: 警告: 互換性のないポインター型から 'freexl_get_cell_value' の引数 4 を渡しています [デフォルトで有効] /usr/include/freexl.h:202:24: 注: 'unsigned char *' が予期されますが、引数の型は 'int *' です virtualXL.c :819:11: エラー: 関数 'freexl_get_cell_value' への引数が少なすぎます /usr/include/freexl.h:202:24: 注: ここで宣言された virtualXL.c:821:6: エラー: 何かのメンバー 'type' の要求構造体または共用体ではない virtualXL.c:822:17: エラー: メンバー 'type' の要求が構造体または共用体の virtualXL.c:825:38 ではない: エラー: メンバー 'value' の要求構造体または共用体ではない virtualXL.c:828:41: エラー: 構造体または共用体ではないものでのメンバー '値' の要求 virtualXL.c:835:39: エラー: メンバー '値' の要求ではないもの構造体または共用体 virtualXL.c:836:23: エラー: 構造体または共用体ではないメンバー '値' の要求
libfreeXL のバージョンの問題のようです。誰かが同様の問題に直面しましたか?
sql - Spatiallite を使用したメートル単位の GIS バッファ値度
Spatialite は初めてです。次のクエリがあります。
私は実際に 100 メートルのバッファーを作成し、どのリンクが含まれているかを知りたいと思っています。
挿入された「100」が実際には度数であることがわかり、この範囲内にある出力が得られます。
度の値もクエリに入れることができますが、度からメートル/キロメートルへの変換は世界中で同じではありません。私は多くのサイトを通過し、1 度 = 約 110 KM を知ることができました。しかし、GIS の専門家やいくつかの参考サイトからも、地球上の各極で異なることがわかります。
たとえば、Alta/Norway での平面近似のメトリック x と y の差は、x 方向で 34 km、y 方向で 111 km です。地理座標を使用すると、バッファーは次のようになります
。
地理データを幾何学的 (X、Y 座標形式) データに変換し、Spatiallite が理解できる変換を行うソフトウェアを構築します。
SRID についても読み込もうとしていますが、それをクエリに挿入する方法を理解できません。