農薬登録における適用作物名別表1

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2015.08.13 19:51 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
ACFinder や携帯農薬検索実験室で、農薬登録における適用作物名別表1を参照できるように、beppyo1 テーブルを作成するためのクエリーを下記に公開しました。
http://macs.o-ya.net/data/spec.beppyo1.txt

内容を全コピして、ACFinder の SQL タブに貼り付けて「実行」すると、beppyo1 テーブルが作成できます。といっても、今のところ sakumotsu テーブルとどう統合するか思案中で、ACFinder に beppyo1 を作成しても何か新しい機能が増えるというわけではありません。
SQLite は FULL OUTER JOIN に対応していないので、相互に存在しないキーもすべて含むようなビューやテーブルを作るのが難しい

beppyo1 テーブルの内容を確認するには、ACFinder の SQL タブで下記のクエリーを実行します。別表1の備考欄は、「を収穫するもの」を削除して shukakubui フィールドに入っています。
select * from beppyo1


別表1にあって、ACFinder の sakumotsu テーブルにない作物(=その作物名で登録農薬がない作物)を確認するクエリーは、下記の通り。
select * from beppyo1 where not exists (select sakumotsu from sakumotsu where beppyo1.sakumotsu = sakumotsu.sakumotsu)


逆に、ACFinder の sakumotsu テーブルあって、別表1にない作物(その作物名で登録農薬があるにも関わらず別表1から漏れている作物)を確認するクエリーは、下記の通り。
select * from sakumotsu where level = 3 and not exists (select sakumotsu from beppyo1 where beppyo1.sakumotsu = sakumotsu.sakumotsu)
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015.08.14 11:02
kabe  長老   投稿数: 231
ACFinder 150814test版 exe のみです。
http://acfinder.kabe.info/acfinder150814test_exe.zip

起動時に spec.beppyo1 を更新します。
主作物、近接作物切替時の作物分類チェック全解除します。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2015.08.23 17:01
kabe  長老   投稿数: 231
作物タブの作物選択ペインに「別表1」タブを付けてみました。
機能的にあまり意味はないですが、せっかくあるのに見えないのは、惜しいので、確認用程度で。
一応、ダブルクリックで登録を検索できます。

http://acfinder.kabe.info/acfinder150823test_exe.zip

正式版と日付が同じで紛らわしいですが、正式版の機能を含みます。


投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015.08.23 19:53
OhYeah!  管理人   投稿数: 983 オンライン
引用:機能的にあまり意味はないですが、せっかくあるのに見えないのは、惜しいので、確認用程度で。
一応、ダブルクリックで登録を検索できます。
携帯農薬検索実験室では別表1単体では使えないので、どうやって sakumotsu テーブルとうまく連動させるかしか考えてませんでしたが、ACFinder だとこういう方向性もアリかも…。
いずれにしても、携帯農薬検索実験室用に sakumotsu テーブルに別表1を統合するつもりなので、作物名検索タブに反映してもらえると幸いです。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015.08.25 00:07 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
新しい sakumotsu テーブルの仕様が固まりました。下記のような内容のテーブルになるように sakumotsu.txt 生成スクリプトを書き直します。
別表1にあって、現行 sakumotsu テーブルにない作物は、上位分類の別名として扱います。作物名検索タブで「根セルリ」を検索すると、「野菜類」が表示されることになります。

--/d
drop table if exists sakumotsu2;
create temp table sakumotsu2 as select level, idsaku, shukakubui, sakumotsu, beppyo1.betsumei as betsumei, ifnullstr(beppyo1.ruby, sakumotsu.betsumei) as ruby from sakumotsu left join beppyo1 using(sakumotsu);
begin transaction;
update sakumotsu2 set shukakubui = (select shukakubui from beppyo1 where sakumotsu = re_replace('[\(\[].+[\)\]]', sakumotsu2.sakumotsu, '')) where shukakubui is null and sakumotsu not regexp '苗木|幼木|親株|は種';
update sakumotsu2 set shukakubui = (select shukakubui from beppyo1 where sakumotsu = '稲') where shukakubui is null and sakumotsu regexp '(移植|直播)水稲';
update sakumotsu2 set shukakubui = (select shukakubui from beppyo1 where sakumotsu = 'ねぎ') where shukakubui is null and sakumotsu regexp '(深|葉)ねぎ|ねぎ類$';
update sakumotsu2 set shukakubui = (select shukakubui from beppyo1 where betsumei like '%'||re_replace('[\(\[].+[\)\]]', sakumotsu2.sakumotsu, '')||'%') where shukakubui is null;
drop table if exists unreg;
create temp table unreg as select ifnullstr(sg, mg) as gr, concat('、', sakumotsu) as sakumotsu, concat('、', betsumei) as betsumei, concat('、', ruby) as ruby from beppyo1 where not exists (select sakumotsu from sakumotsu2 where beppyo1.sakumotsu = sakumotsu2.sakumotsu) group by sg, mg;
update sakumotsu2 set betsumei = concat('、', betsumei, (select sakumotsu from unreg where gr = sakumotsu2.sakumotsu), (select betsumei from unreg where gr = sakumotsu2.sakumotsu)), ruby = concat('、', ruby, (select ruby from unreg where gr = sakumotsu2.sakumotsu)) where sakumotsu in (select gr from unreg);
drop table unreg;
commit;
select * from sakumotsu2;


>kabe さん
作物名検索タブの検索結果には、shukakubui フィールドの内容も表示するようにしてください。これで、「セルリ」で検索した時に収穫部位が「茎葉」の「セルリー」と収穫部位が「果実、茎葉、根、花(食用)等」の「野菜類」が表示されることになり、「根セルリ」には「野菜類」の農薬しか使えないと判断できるようになります。
下位互換性を確保して新 sakumotsu テーブルへ円滑に移行するには、別名とルビは別フィールドではなく、従来通り betsumei フィールドに統合しておいたほうが無難ですかね?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015.08.25 18:16
kabe  長老   投稿数: 231
了解です。

RUBY フィールドの件は、どうしましょう。
ACFinder 側の SQL を変更しないと、よみがなでの検索はできないことですよね。
対応バージョンでなくても、エラーが出ないのであれば、そのまま強行もありですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015.08.25 21:19
OhYeah!  管理人   投稿数: 983 オンライン
引用:対応バージョンでなくても、エラーが出ないのであれば、そのまま強行もありですね。読み仮名検索ができないだけでエラーにはならないはずですが、みんながすぐに ACFinder のアップデートをするとは限らないので、あんまり芳しくはないですよね。なので、ちょっと方針変更します。

分類のためにしか使わない作物名や、新しい betsumei, ruby などの必要な情報は全て m_sakumotsu に集約します。新しい、ACFinder では、m_sakumotsu から分類チェックツリーボックスの作成や作物名検索を行うようにします。sakumotsu は下位互換確保のためのビューとして再構成し、従来の ACFinder でも問題なく使用できるようにします。

この方向で m_sakumotsu テーブル生成スクリプトを作成中なので、完成したら対応版の作成をお願いします。
投票数:0 平均点:0.00

なし 企画倒れ

msg# 1.1.1.2.1.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015.08.27 00:20
OhYeah!  管理人   投稿数: 983 オンライン
引用:sakumotsu は下位互換確保のためのビューとして再構成し、従来の ACFinder でも問題なく使用できるようにします。新 m_sakumotsu とビュー版 sakumotsu で問題なく従来版 ACFinder が問題なく動作することは確認しました。が、下記コードが、sakumotsu テーブルがあるときは問題なく動作するものの、sakumotsu ビュー作成後は「drop table」のところで「drop view」を使いなさいとランタイムエラーになります。このランタイムエラーを回避する方法はありません。

--/d
drop table if exists sakumotsu;
create view if not exists sakumotsu as select level, idsaku, sakumotsu, ruby||ifnull('、'||betsumei, '') as betsumei from m_sakumotsu where sakumotsu not like '%除く%';


ということで、当面の間は下位互換性確保のために無駄でも sakumotsu テーブルを持つようにするか、m_sakumotsu と sakumotsu の内容は最初の通りにして阿部さんが言われるように ruby 検索をあきらめるかのどちらかですね。どっちがいいかなあ…。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2015.08.27 17:21 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
本日午後から、ACFinder の作物マスターが別表1統合版になっています。「作物名検索」で「せろり」を検索すると、「野菜類」「セルリー」の2つが表示されます。これは、茎葉を収穫する「セルリー」が「セルリー」に該当し、根を収穫する「セルリアック(根セルリー)」が「野菜類」に該当するということです。
今のところ ACFinder では収穫部位が表示されませんが、新作物マスター対応版が公開されれば収穫部位も表示されて候補作物の判別がしやすくなると思います。

携帯農薬検索実験室も、別表1統合版作物マスターで検索するようになっています。こちらもまだ収穫部位の表示には対応していません。

>kabe さん
作物分類チェックツリーボックスと作物名検索それぞれに、専用ビューを用意しました。新 ACFinder では、sakumotsu テーブルではなく、専用ビューをお使いください。

作物分類用ビュー
create view vg_sakumotsu as select level, idsaku, toroku, shukakubui, sakumotsu, betsumei from m_sakumotsu where sakumotsu not like '%除く%' order by idsaku;
使用方法
select level, idsaku, sakumotsu from vg_sakumotsu;
toroku フィールドに登録農薬の有無が入っているので、登録農薬がない分類のための作物名のチェックボックスを disable するなんてことも可能になります。shukakubui, betsumei フィールドも持っているので、やろうと思えば作物分類ツリーに収穫部位や別名を表示することも可能です。

作物名検索用ビュー
create view vs_sakumotsu as select level, idsaku, shukakubui, sakumotsu, betsumei, strconv(sakumotsu, 'kw')||'、'||ruby||strconv('、'||betsumei, 'kw') as keywords from m_sakumotsu where toroku and sakumotsu not like '%除く%';
使用方法
select * from vs_sakumotsu where strconv(keywords) like preconv('%検索語%') order by idsaku;
野菜類の別名が巨大になったので、strconv と concat のバッファを増やさないと野菜類の別名に入っている作物名が検索できない場合があります。
MACS では、concat('、', ruby, strconv(betsumei, 'kw')) の結果が大きくなりすぎないように concat 関数を最適化しました。sakumotsu テーブルの betsumei が極端に肥大してないのはこのおかげです。が、Delphi には split 関数がないのですぐに対応できそうにありません。当面、バッファの容量拡大のみで対応いただければと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015.08.27 21:36
OhYeah!  管理人   投稿数: 983 オンライン
あれ? 作物分類が変だ! なぜ?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015.08.27 21:54 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
作物 ID 順に並べなおしてなかったのが原因でした。しかし、現在は作物 ID 順に並べなおしているものの、「その他の食用作物」が「マメ科牧草」の下に入ってたり、まだちょっとおかしいですね。
明日は早朝から那須に出張で、帰ってきてから 22 時まで会議なので、修正は土曜日以降になります。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015.08.27 23:12
OhYeah!  管理人   投稿数: 983 オンライン
引用:明日は早朝から那須に出張で、帰ってきてから 22 時まで会議なので、修正は土曜日以降になります。風呂に入ってたら突然問題個所に思い至ったので、早速試してみたら、バッチリ直りました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015.09.03 09:30
OhYeah!  管理人   投稿数: 983 オンライン
本日深夜から、ACFinder 作物マスターが改訂されています。旧版では、別表1に記載されていても実際には登録農薬がない作物は「野菜類」などの上位分類で表示されていましたが、新版では別表1の作物名で表示されます。
たとえば、作物名検索で「ささげ」を検索すると旧版では「未成熟ささげ」と「豆類(未成熟)」がリストアップされましたが、新版では「未成熟ささげ」と「ささげ」がリストアップされます。「根セロリ」を検索すると、旧版では「野菜類」がリストアップされましたが、新版では「セルリアック」がリストアップされます。
また、この改訂により、作物分類ツリーボックスに別表1記載作物名がすべて表示されるようになりました。「ささげ」は「豆類->豆類(種実)」の下に、「セルリアック」は「野菜類->野菜類」の下に表示されます。

分類や作物名検索で別表1に記載されていても実際には登録農薬がない作物を選択した場合、階段状の赤い矢印の「上位グループを含む」ボタンが凸状態だと、「検索条件に一致するデータはありません」となります。分類タブ、作物名検索タブとも、「上位グループを含む」ボタンが凹状態を基本として使用するようにしてください。

今のところ、野菜類と果樹類の別表1に記載されていても実際には登録農薬がない作物は、それぞれ「野菜類->野菜類」「果樹類->果樹類」の下に入るようにしてあります。「野菜類->その他野菜類」「果樹類->その他果樹類」の下の方が良いかなという感じもしますが、どちらが良いかご意見をお願いします。
なお、「ぶどう(巨峰系4倍体品種)」「ぶどう(2倍体米国系品種)」については、例外処理で問題ないように修正します。「長門ユズキチ」は今のままでも問題はありませんが、これも例外処理を考えています。

>kabeさん
m_sakumotsu の toroku フィールドは、登録薬剤がない分類名=0、登録薬剤がある作物名=1、上位分類に登録薬剤がある作物名=2という値になっています。vs_sakumotsu ビューにも toroku フィールドを追加したので、分類タブ、作物名検索タブとも、toroku = 2 の作物を選択した場合は、上位分類一括検索がオフでも強制上位分類一括検索にしてもらった方が使いやすいと思います。
さらに、toroku = 2 の作物名は、分類ツリーではマークの色を変えるか形を変える、作物名検索タブでは何らかの目印を付けるなどしてもらえると、より分かりやすくなるのではないかと…。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015.09.03 15:08
OhYeah!  管理人   投稿数: 983 オンライン
引用:なお、「ぶどう(巨峰系4倍体品種)」「ぶどう(2倍体米国系品種)」については、例外処理で問題ないように修正します。「長門ユズキチ」は今のままでも問題はありませんが、これも例外処理を考えています。この3作物の問題を解決しました。
「ぶどう(巨峰系4倍体品種)」「ぶどう(2倍体米国系品種)」は分類タブで「果樹類->果樹類」の下に表示され、作物名検索タブで「黄玉」を検索すると「果樹類」の農薬しか検索できませんでした。現在は、分類タブで「果樹類->落葉果樹->ぶどう」の下に表示され、作物名検索タブで「黄玉」を検索すると「ぶどう(巨峰系4倍体品種)[有核栽培]」に使用可能な農薬が検索されます。
「長門ユズキチ」は「長門ユズキチ(有核)」と別作物として分類タブに表示されましたが、実際に登録されている作物名である「長門ユズキチ(有核)」に統合されています。

また、読み仮名検索が作物名の読み仮名しか検索できなくなっていたので、別名の読み仮名でも検索できるように修正しました。
投票数:0 平均点:0.00

  条件検索へ