[OSGeoJapan-discuss] 【質問】QGISのshapeファイル:既存+新しく地物を追加した際に自動的にユニークIDが入力される方法(uuid()以外でもあるでしょうか?)

藤田卓 fujita @ nacsj.or.jp
2023年 11月 12日 (日) 22:01:43 PST


田鎖さま

早速ありがとうございます
藤田です

アドバイスいただき大変助かりました
right(left(uuid(),7),6)
で確かにユニークIDが6桁で作れること確認できました
ありがとうございます。

毎回、SHAPEファイル内で地物を追加されるたびに、IDを手動で発生させるもの面倒かつ間違えて重複IDを作るリスクもあり(過去に何度がやってしまった)かつ過去登録したIDは変更したくなかったので
今回のご提案、大変助かりました


リスクを減らすために倍の12桁なら、下記で対処するか、重複を避けるためには38桁でもやもえないのかとも思いました

right(left(uuid(),37),12)


解決の方向性がみえて助かりました



>なお,あるレイヤーについて,衝突しないユニークなIDを求めるなら連番の方が良いかもしれません。

これは、下記を参照して$idなども使ったのですが、デフォルトとして入力しても 0に戻ってしまうなどうまくいきませんでしたが

よい方法があるということでしょうか?


ユニークID(地物毎に固有の値)を作成する方法:QGISを使ってみる - LL.me (lemulus.me)
<https://lemulus.me/trygis/qgis-unique-id>


おてすきの際に、アドバイスいただけましたら幸いです



ユニークID(地物毎に固有の値)を作成する方法:QGISを使ってみる - LL.me (lemulus.me)
> <https://lemulus.me/trygis/qgis-unique-id>
>
> たとえば,以下の式をユニークIDのデフォルトとして入力すると,6桁のIDが得られます。
> right(left(uuid(),7),6)
>
> uuidの桁数を落としているだけなので,衝突する可能性があります。桁数を多くすれば衝突の可能性は低くなります。
> それで良いのか,と思われるかもしれませんが,uuidがそもそもその程度のものだと私は認識しています。
> なお,あるレイヤーについて,衝突しないユニークなIDを求めるなら連番の方が良いかもしれません。
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20231113/726efc3d/attachment.htm>


OSGeoJapan-discuss メーリングリストの案内