【教えてください】大量のライン群の一部にフラグを立てたい

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

【教えてください】大量のライン群の一部にフラグを立てたい

shimada yasu
みなさま

いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。

約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
立てようとしているのですが、時間ばかりかかり困っています。

DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。

が、それでも4時間かかりました。

もう少し効率的な手法があれば、教えて頂けないでしょうか・・?

select
*
from
lines, polygon
where
ST_contains(lines.geom, polygon.geom)=1;


--
島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
/TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
/携帯:080-8018-1567
_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
Reply | Threaded
Open this post in threaded view
|

Re: 【教えてください】大量のライン群の一部にフラグを立てたい

Yoichi Kayama
嘉山です

それぞれのレイヤで空間インデックスは作成されていますか?
それがあるかないかではえらく処理速度は違いますが。

2020年6月30日(火) 13:12 shimada yasu <[hidden email]>:
みなさま

いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。

約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
立てようとしているのですが、時間ばかりかかり困っています。

DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。

が、それでも4時間かかりました。

もう少し効率的な手法があれば、教えて頂けないでしょうか・・?

select
*
from
lines, polygon
where
ST_contains(lines.geom, polygon.geom)=1;


--
島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
/TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
/携帯:080-8018-1567
_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss

_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
Reply | Threaded
Open this post in threaded view
|

Re: 【教えてください】大量のライン群の一部にフラグを立てたい

shimada yasu
嘉山様

さっそくありがとうございました。

空間インデックスは作っていませんでした・・・。

試してみます。

しまだ

2020年6月30日(火) 13:19 Yoichi Kayama <[hidden email]>:

>
> 嘉山です
>
> それぞれのレイヤで空間インデックスは作成されていますか?
> それがあるかないかではえらく処理速度は違いますが。
>
> 2020年6月30日(火) 13:12 shimada yasu <[hidden email]>:
>>
>> みなさま
>>
>> いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。
>>
>> 約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
>> ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
>> 立てようとしているのですが、時間ばかりかかり困っています。
>>
>> DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。
>>
>> が、それでも4時間かかりました。
>>
>> もう少し効率的な手法があれば、教えて頂けないでしょうか・・?
>>
>> select
>> *
>> from
>> lines, polygon
>> where
>> ST_contains(lines.geom, polygon.geom)=1;
>>
>>
>> --
>> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
>> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
>> /携帯:080-8018-1567
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> [hidden email]
>> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss



--
島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
/TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
/携帯:080-8018-1567
_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
Reply | Threaded
Open this post in threaded view
|

Re: 【教えてください】大量のライン群の一部にフラグを立てたい

shimada yasu
空間インデックスを作成して走らせてみたら、わずか4秒で終了しました。

おお、これはすごい・・・と思ってcreate table kekka asをつけてみたら
再び激遅になりました(いつ終わるか不明)

create tableなので「書き込み速度」に依存しているのですかね。。。

create table kekka as
select
*
from
lines, polygon
where
ST_contains(lines.geom, polygon.geom)=1;

しまだ

2020年6月30日(火) 13:26 shimada yasu <[hidden email]>:

>
> 嘉山様
>
> さっそくありがとうございました。
>
> 空間インデックスは作っていませんでした・・・。
>
> 試してみます。
>
> しまだ
>
> 2020年6月30日(火) 13:19 Yoichi Kayama <[hidden email]>:
> >
> > 嘉山です
> >
> > それぞれのレイヤで空間インデックスは作成されていますか?
> > それがあるかないかではえらく処理速度は違いますが。
> >
> > 2020年6月30日(火) 13:12 shimada yasu <[hidden email]>:
> >>
> >> みなさま
> >>
> >> いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。
> >>
> >> 約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
> >> ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
> >> 立てようとしているのですが、時間ばかりかかり困っています。
> >>
> >> DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。
> >>
> >> が、それでも4時間かかりました。
> >>
> >> もう少し効率的な手法があれば、教えて頂けないでしょうか・・?
> >>
> >> select
> >> *
> >> from
> >> lines, polygon
> >> where
> >> ST_contains(lines.geom, polygon.geom)=1;
> >>
> >>
> >> --
> >> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> >> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> >> /携帯:080-8018-1567
> >> _______________________________________________
> >> OSGeoJapan-discuss mailing list
> >> [hidden email]
> >> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
>
>
> --
> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> /携帯:080-8018-1567



--
島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
/TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
/携帯:080-8018-1567
_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
Reply | Threaded
Open this post in threaded view
|

Re: 【教えてください】大量のライン群の一部にフラグを立てたい

Yoichi Kayama
嘉山です

ジオメトリ付きのテーブルの場合メインキーになるユニークid が必要ですが、このSQLの
場合それがどうなるかちょいと心配です。

lines,polygon の両方のテーブルからクエリかけたら掛け算になってlines 側のレコードの
idが使われた場合でも同じidのレコードが複数できちゃって単純なクエリの場合は大丈夫
だけどテーブルつくる話になっちゃうとぶつかっちゃってとかいうことはないでしょうかね。

この場合クエリ結果がジオメトリつきテーブルとして自動的に認識されるかどうかがちょっと
わからないとこですが(ジオメトリつきのテーブルとジオメトリカラムを管理する仕組み
がSpatialiteとかPostGISとかGeoPackageにはあるのでこのクエリでそのあたりが自動的に
動いてくれるかどうかはわかりません。うまくいかない場合は後で手動でそのあたりの整合性
をつくることはできると思います)


2020年6月30日(火) 16:05 shimada yasu <[hidden email]>:
空間インデックスを作成して走らせてみたら、わずか4秒で終了しました。

おお、これはすごい・・・と思ってcreate table kekka asをつけてみたら
再び激遅になりました(いつ終わるか不明)

create tableなので「書き込み速度」に依存しているのですかね。。。

create table kekka as
select
*
from
lines, polygon
where
ST_contains(lines.geom, polygon.geom)=1;

しまだ

2020年6月30日(火) 13:26 shimada yasu <[hidden email]>:
>
> 嘉山様
>
> さっそくありがとうございました。
>
> 空間インデックスは作っていませんでした・・・。
>
> 試してみます。
>
> しまだ
>
> 2020年6月30日(火) 13:19 Yoichi Kayama <[hidden email]>:
> >
> > 嘉山です
> >
> > それぞれのレイヤで空間インデックスは作成されていますか?
> > それがあるかないかではえらく処理速度は違いますが。
> >
> > 2020年6月30日(火) 13:12 shimada yasu <[hidden email]>:
> >>
> >> みなさま
> >>
> >> いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。
> >>
> >> 約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
> >> ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
> >> 立てようとしているのですが、時間ばかりかかり困っています。
> >>
> >> DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。
> >>
> >> が、それでも4時間かかりました。
> >>
> >> もう少し効率的な手法があれば、教えて頂けないでしょうか・・?
> >>
> >> select
> >> *
> >> from
> >> lines, polygon
> >> where
> >> ST_contains(lines.geom, polygon.geom)=1;
> >>
> >>
> >> --
> >> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> >> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> >> /携帯:080-8018-1567
> >> _______________________________________________
> >> OSGeoJapan-discuss mailing list
> >> [hidden email]
> >> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
>
>
> --
> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> /携帯:080-8018-1567



--
島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
/TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
/携帯:080-8018-1567

_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
Reply | Threaded
Open this post in threaded view
|

Re: 【教えてください】大量のライン群の一部にフラグを立てたい

shimada yasu
嘉山様

ありがとうございました。

当初、素人でも試行錯誤でなんとかなるかなと思っていましたが、
お話を聞くと、やはりきちんとSQLを勉強すべきと感じました。

もう少し時間をかけてみます。ありがとうございました。

しまだ

2020年6月30日(火) 16:59 Yoichi Kayama <[hidden email]>:

>
> 嘉山です
>
> ジオメトリ付きのテーブルの場合メインキーになるユニークid が必要ですが、このSQLの
> 場合それがどうなるかちょいと心配です。
>
> lines,polygon の両方のテーブルからクエリかけたら掛け算になってlines 側のレコードの
> idが使われた場合でも同じidのレコードが複数できちゃって単純なクエリの場合は大丈夫
> だけどテーブルつくる話になっちゃうとぶつかっちゃってとかいうことはないでしょうかね。
>
> この場合クエリ結果がジオメトリつきテーブルとして自動的に認識されるかどうかがちょっと
> わからないとこですが(ジオメトリつきのテーブルとジオメトリカラムを管理する仕組み
> がSpatialiteとかPostGISとかGeoPackageにはあるのでこのクエリでそのあたりが自動的に
> 動いてくれるかどうかはわかりません。うまくいかない場合は後で手動でそのあたりの整合性
> をつくることはできると思います)
>
>
> 2020年6月30日(火) 16:05 shimada yasu <[hidden email]>:
>>
>> 空間インデックスを作成して走らせてみたら、わずか4秒で終了しました。
>>
>> おお、これはすごい・・・と思ってcreate table kekka asをつけてみたら
>> 再び激遅になりました(いつ終わるか不明)
>>
>> create tableなので「書き込み速度」に依存しているのですかね。。。
>>
>> create table kekka as
>> select
>> *
>> from
>> lines, polygon
>> where
>> ST_contains(lines.geom, polygon.geom)=1;
>>
>> しまだ
>>
>> 2020年6月30日(火) 13:26 shimada yasu <[hidden email]>:
>> >
>> > 嘉山様
>> >
>> > さっそくありがとうございました。
>> >
>> > 空間インデックスは作っていませんでした・・・。
>> >
>> > 試してみます。
>> >
>> > しまだ
>> >
>> > 2020年6月30日(火) 13:19 Yoichi Kayama <[hidden email]>:
>> > >
>> > > 嘉山です
>> > >
>> > > それぞれのレイヤで空間インデックスは作成されていますか?
>> > > それがあるかないかではえらく処理速度は違いますが。
>> > >
>> > > 2020年6月30日(火) 13:12 shimada yasu <[hidden email]>:
>> > >>
>> > >> みなさま
>> > >>
>> > >> いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。
>> > >>
>> > >> 約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
>> > >> ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
>> > >> 立てようとしているのですが、時間ばかりかかり困っています。
>> > >>
>> > >> DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。
>> > >>
>> > >> が、それでも4時間かかりました。
>> > >>
>> > >> もう少し効率的な手法があれば、教えて頂けないでしょうか・・?
>> > >>
>> > >> select
>> > >> *
>> > >> from
>> > >> lines, polygon
>> > >> where
>> > >> ST_contains(lines.geom, polygon.geom)=1;
>> > >>
>> > >>
>> > >> --
>> > >> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
>> > >> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
>> > >> /携帯:080-8018-1567
>> > >> _______________________________________________
>> > >> OSGeoJapan-discuss mailing list
>> > >> [hidden email]
>> > >> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>> >
>> >
>> >
>> > --
>> > 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
>> > /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
>> > /携帯:080-8018-1567
>>
>>
>>
>> --
>> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
>> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
>> /携帯:080-8018-1567



--
島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
/TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
/携帯:080-8018-1567
_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
Reply | Threaded
Open this post in threaded view
|

Re: 【教えてください】大量のライン群の一部にフラグを立てたい

尾崎 剛
しまだ様

まずは少し気になった点がありますので
ご指摘させていただきます。

> ST_contains(lines.geom, polygon.geom)=1;

ST_containsは第1引数に第2引数が内包されているかどうかのフラグを数値で返します。
ST_contains(polygon.geom, lines.geom)=1
にしないと期待している動きにならないと思います。

次に本題ですが
linesテーブルにフラグ用カラム(例えばflag)を追加して
内包されているラインにフラグを付ける方法をとってはいかがでしょうか?

-- カラム追加
ALTER TABLE lines ADD COLUMN flag integer;
-- フラグ付与
UPDATE lines SET flag = (SELECT ST_contains(polygon.geometry, lines.geometry) FROM polygon);

参考になれば幸いです。



On Tue, 30 Jun 2020 17:36:30 +0900
shimada yasu <[hidden email]> wrote:

> 嘉山様
>
> ありがとうございました。
>
> 当初、素人でも試行錯誤でなんとかなるかなと思っていましたが、
> お話を聞くと、やはりきちんとSQLを勉強すべきと感じました。
>
> もう少し時間をかけてみます。ありがとうございました。
>
> しまだ
>
> 2020年6月30日(火) 16:59 Yoichi Kayama <[hidden email]>:
> >
> > 嘉山です
> >
> > ジオメトリ付きのテーブルの場合メインキーになるユニークid が必要ですが、このSQLの
> > 場合それがどうなるかちょいと心配です。
> >
> > lines,polygon の両方のテーブルからクエリかけたら掛け算になってlines 側のレコードの
> > idが使われた場合でも同じidのレコードが複数できちゃって単純なクエリの場合は大丈夫
> > だけどテーブルつくる話になっちゃうとぶつかっちゃってとかいうことはないでしょうかね。
> >
> > この場合クエリ結果がジオメトリつきテーブルとして自動的に認識されるかどうかがちょっと
> > わからないとこですが(ジオメトリつきのテーブルとジオメトリカラムを管理する仕組み
> > がSpatialiteとかPostGISとかGeoPackageにはあるのでこのクエリでそのあたりが自動的に
> > 動いてくれるかどうかはわかりません。うまくいかない場合は後で手動でそのあたりの整合性
> > をつくることはできると思います)
> >
> >
> > 2020年6月30日(火) 16:05 shimada yasu <[hidden email]>:
> >>
> >> 空間インデックスを作成して走らせてみたら、わずか4秒で終了しました。
> >>
> >> おお、これはすごい・・・と思ってcreate table kekka asをつけてみたら
> >> 再び激遅になりました(いつ終わるか不明)
> >>
> >> create tableなので「書き込み速度」に依存しているのですかね。。。
> >>
> >> create table kekka as
> >> select
> >> *
> >> from
> >> lines, polygon
> >> where
> >> ST_contains(lines.geom, polygon.geom)=1;
> >>
> >> しまだ
> >>
> >> 2020年6月30日(火) 13:26 shimada yasu <[hidden email]>:
> >> >
> >> > 嘉山様
> >> >
> >> > さっそくありがとうございました。
> >> >
> >> > 空間インデックスは作っていませんでした・・・。
> >> >
> >> > 試してみます。
> >> >
> >> > しまだ
> >> >
> >> > 2020年6月30日(火) 13:19 Yoichi Kayama <[hidden email]>:
> >> > >
> >> > > 嘉山です
> >> > >
> >> > > それぞれのレイヤで空間インデックスは作成されていますか?
> >> > > それがあるかないかではえらく処理速度は違いますが。
> >> > >
> >> > > 2020年6月30日(火) 13:12 shimada yasu <[hidden email]>:
> >> > >>
> >> > >> みなさま
> >> > >>
> >> > >> いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。
> >> > >>
> >> > >> 約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
> >> > >> ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
> >> > >> 立てようとしているのですが、時間ばかりかかり困っています。
> >> > >>
> >> > >> DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。
> >> > >>
> >> > >> が、それでも4時間かかりました。
> >> > >>
> >> > >> もう少し効率的な手法があれば、教えて頂けないでしょうか・・?
> >> > >>
> >> > >> select
> >> > >> *
> >> > >> from
> >> > >> lines, polygon
> >> > >> where
> >> > >> ST_contains(lines.geom, polygon.geom)=1;
> >> > >>
> >> > >>
> >> > >> --
> >> > >> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> >> > >> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> >> > >> /携帯:080-8018-1567
> >> > >> _______________________________________________
> >> > >> OSGeoJapan-discuss mailing list
> >> > >> [hidden email]
> >> > >> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
> >> >
> >> >
> >> >
> >> > --
> >> > 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> >> > /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> >> > /携帯:080-8018-1567
> >>
> >>
> >>
> >> --
> >> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> >> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> >> /携帯:080-8018-1567
>
>
>
> --
> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> /携帯:080-8018-1567
> _______________________________________________
> OSGeoJapan-discuss mailing list
> [hidden email]
> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss

_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
Reply | Threaded
Open this post in threaded view
|

Re: 【教えてください】大量のライン群の一部にフラグを立てたい

尾崎 剛
しまだ様

補足させていただきます。

その1
> ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)

読み飛ばしておりましたが
既にフラグ用のカラムがあるとのことですので
---------------------------
UPDATE lines
  SET あるカラム = 999
  WHERE (SELECT ST_Contains(polygon.geom, lines.geom) FROM polygon) = 1;
---------------------------
でよいですね。

その2
> 空間インデックスを作成して走らせてみたら、わずか4秒で終了しました。

恐らくspatialite_gui上でSELECT文を実行した結果だと思います。
spatialite_guiはSELECT結果を勝手に500件でページングするため
結果が500件以上になる場合に全体の処理時間を測ることができません。


On Wed, 01 Jul 2020 13:17:50 +0900
尾崎 剛 <[hidden email]> wrote:

> しまだ様
>
> まずは少し気になった点がありますので
> ご指摘させていただきます。
>
> > ST_contains(lines.geom, polygon.geom)=1;
>
> ST_containsは第1引数に第2引数が内包されているかどうかのフラグを数値で返します。
> ST_contains(polygon.geom, lines.geom)=1
> にしないと期待している動きにならないと思います。
>
> 次に本題ですが
> linesテーブルにフラグ用カラム(例えばflag)を追加して
> 内包されているラインにフラグを付ける方法をとってはいかがでしょうか?
>
> -- カラム追加
> ALTER TABLE lines ADD COLUMN flag integer;
> -- フラグ付与
> UPDATE lines SET flag = (SELECT ST_contains(polygon.geometry, lines.geometry) FROM polygon);
>
> 参考になれば幸いです。
>
>
>
> On Tue, 30 Jun 2020 17:36:30 +0900
> shimada yasu <[hidden email]> wrote:
>
> > 嘉山様
> >
> > ありがとうございました。
> >
> > 当初、素人でも試行錯誤でなんとかなるかなと思っていましたが、
> > お話を聞くと、やはりきちんとSQLを勉強すべきと感じました。
> >
> > もう少し時間をかけてみます。ありがとうございました。
> >
> > しまだ
> >
> > 2020年6月30日(火) 16:59 Yoichi Kayama <[hidden email]>:
> > >
> > > 嘉山です
> > >
> > > ジオメトリ付きのテーブルの場合メインキーになるユニークid が必要ですが、このSQLの
> > > 場合それがどうなるかちょいと心配です。
> > >
> > > lines,polygon の両方のテーブルからクエリかけたら掛け算になってlines 側のレコードの
> > > idが使われた場合でも同じidのレコードが複数できちゃって単純なクエリの場合は大丈夫
> > > だけどテーブルつくる話になっちゃうとぶつかっちゃってとかいうことはないでしょうかね。
> > >
> > > この場合クエリ結果がジオメトリつきテーブルとして自動的に認識されるかどうかがちょっと
> > > わからないとこですが(ジオメトリつきのテーブルとジオメトリカラムを管理する仕組み
> > > がSpatialiteとかPostGISとかGeoPackageにはあるのでこのクエリでそのあたりが自動的に
> > > 動いてくれるかどうかはわかりません。うまくいかない場合は後で手動でそのあたりの整合性
> > > をつくることはできると思います)
> > >
> > >
> > > 2020年6月30日(火) 16:05 shimada yasu <[hidden email]>:
> > >>
> > >> 空間インデックスを作成して走らせてみたら、わずか4秒で終了しました。
> > >>
> > >> おお、これはすごい・・・と思ってcreate table kekka asをつけてみたら
> > >> 再び激遅になりました(いつ終わるか不明)
> > >>
> > >> create tableなので「書き込み速度」に依存しているのですかね。。。
> > >>
> > >> create table kekka as
> > >> select
> > >> *
> > >> from
> > >> lines, polygon
> > >> where
> > >> ST_contains(lines.geom, polygon.geom)=1;
> > >>
> > >> しまだ
> > >>
> > >> 2020年6月30日(火) 13:26 shimada yasu <[hidden email]>:
> > >> >
> > >> > 嘉山様
> > >> >
> > >> > さっそくありがとうございました。
> > >> >
> > >> > 空間インデックスは作っていませんでした・・・。
> > >> >
> > >> > 試してみます。
> > >> >
> > >> > しまだ
> > >> >
> > >> > 2020年6月30日(火) 13:19 Yoichi Kayama <[hidden email]>:
> > >> > >
> > >> > > 嘉山です
> > >> > >
> > >> > > それぞれのレイヤで空間インデックスは作成されていますか?
> > >> > > それがあるかないかではえらく処理速度は違いますが。
> > >> > >
> > >> > > 2020年6月30日(火) 13:12 shimada yasu <[hidden email]>:
> > >> > >>
> > >> > >> みなさま
> > >> > >>
> > >> > >> いつも教えてもらってばかりで恐縮ですが、ご存じでしたらご指導ください。
> > >> > >>
> > >> > >> 約29万のライン群があり、この一部にポリゴン(ひとつ)がかかっています。
> > >> > >> ポリゴンに含まれるライン群にフラグ(あるカラムに999を入れる)を
> > >> > >> 立てようとしているのですが、時間ばかりかかり困っています。
> > >> > >>
> > >> > >> DB処理が速いと聞いたので、不慣れなspatialiteでやってみました。
> > >> > >>
> > >> > >> が、それでも4時間かかりました。
> > >> > >>
> > >> > >> もう少し効率的な手法があれば、教えて頂けないでしょうか・・?
> > >> > >>
> > >> > >> select
> > >> > >> *
> > >> > >> from
> > >> > >> lines, polygon
> > >> > >> where
> > >> > >> ST_contains(lines.geom, polygon.geom)=1;
> > >> > >>
> > >> > >>
> > >> > >> --
> > >> > >> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> > >> > >> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> > >> > >> /携帯:080-8018-1567
> > >> > >> _______________________________________________
> > >> > >> OSGeoJapan-discuss mailing list
> > >> > >> [hidden email]
> > >> > >> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
> > >> >
> > >> >
> > >> >
> > >> > --
> > >> > 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> > >> > /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> > >> > /携帯:080-8018-1567
> > >>
> > >>
> > >>
> > >> --
> > >> 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> > >> /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> > >> /携帯:080-8018-1567
> >
> >
> >
> > --
> > 島田泰夫/一般財団法人日本気象協会/環境・エネルギー事業部/環境アセスメント事業課/〒170-6055豊島区東池袋3-1-1サンシャイン60-55F
> > /TEL:03-5958-8160 FAX:03-5958-8157 /[hidden email]
> > /携帯:080-8018-1567
> > _______________________________________________
> > OSGeoJapan-discuss mailing list
> > [hidden email]
> > https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
> _______________________________________________
> OSGeoJapan-discuss mailing list
> [hidden email]
> https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss

_______________________________________________
OSGeoJapan-discuss mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss