{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import arcpy\n",
    "import os\n",
    "\n",
    "#source_workspace  = r\"C:\\Users\\johnnychan\\Desktop\\2026年一期作水稻灌水分布0119\"   # 原始檔案所在目錄\n",
    "merge_gdb = r\"C:\\Users\\johnnychan\\Desktop\\gis2\\project2025\\2025.gdb\"         # new geodatabase所建立，用來儲存結果\n",
    "output_name = r\"output\"\n",
    "\n",
    "arcpy.env.overwriteOutput = True\n",
    "\n",
    "merge_fc = r\"C:\\Users\\johnnychan\\Desktop\\gis2\\project2025\\2025.gdb\\農業土地覆蓋_衛判_會籍地_2025\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 設定來源工作目錄\n",
    "arcpy.env.workspace = merge_gdb\n",
    "\n",
    "# 受益地shp檔案\n",
    "benefit_fc = r\"Z:\\91_數位發展處\\01_資料專區\\80_GIS圖資\\灌排受益地圖資\\農水署灌排受益地_113年11月版\\農水署灌排受益地_113年11月版.gdb\\彙整資料\\農水署灌排受益地_113年11月版\"\n",
    "intersect_fc = \"parcel_intersect\"\n",
    "\n",
    "# 確保沒有 selection\n",
    "arcpy.management.SelectLayerByAttribute(merge_fc, \"CLEAR_SELECTION\")\n",
    "arcpy.management.SelectLayerByAttribute(benefit_fc, \"CLEAR_SELECTION\")\n",
    "\n",
    "# =========================執行intersect計算=========================\n",
    "arcpy.analysis.Intersect(\n",
    "    in_features=[merge_fc, benefit_fc],\n",
    "    out_feature_class=intersect_fc\n",
    ")\n",
    "\n",
    "# 建新欄位：area_inter，值 = area_inter\n",
    "arcpy.management.AddField(\n",
    "    intersect_fc,\n",
    "    \"area_inter\",\n",
    "    \"DOUBLE\"\n",
    ")\n",
    "arcpy.management.CalculateField(\n",
    "    intersect_fc,\n",
    "    \"area_inter\",\n",
    "    \"!shape.area!\",\n",
    "    \"PYTHON3\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ==================執行Dissolve分析：同坵塊面積加總====================\n",
    "dissolve_fc = \"parcel_dissolve\"\n",
    "\n",
    "arcpy.management.Dissolve(\n",
    "    in_features=intersect_fc,\n",
    "    out_feature_class=dissolve_fc,\n",
    "    dissolve_field=[\"FID_農業土地覆蓋_衛判_會籍地_2025\", \"PARCEL_NO\"],\n",
    "    statistics_fields=[[\"area_inter\", \"SUM\"]]\n",
    ")\n",
    "\n",
    "# 建立新欄位：PARCEL_TXT，值 = PARCEL_NO\n",
    "arcpy.management.AddField(dissolve_fc, \"PARCEL_TXT\", \"TEXT\", field_length=50)\n",
    "arcpy.management.CalculateField(\n",
    "    dissolve_fc,\n",
    "    \"PARCEL_TXT\",\n",
    "    \"!PARCEL_NO!\",\n",
    "    \"PYTHON3\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 10:33:23\",\"Succeeded at 2026年4月2日 上午 10:33:23 (Elapsed Time: 0.08 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'merge_lyr'>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# =========================判斷是否為受益地===========================\n",
    "merge_lyr = \"merge_lyr\"\n",
    "arcpy.management.MakeFeatureLayer(merge_fc, merge_lyr)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 10:33:48\",\"Succeeded at 2026年4月2日 上午 10:34:56 (Elapsed Time: 1 minutes 8 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'merge_lyr'>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Join _dissolve圖層\n",
    "# Addjoin 很慢  => JoinField 快很多\n",
    "\n",
    "arcpy.management.JoinField(\n",
    "    merge_lyr,\n",
    "    \"OBJECTID\",\n",
    "    dissolve_fc,\n",
    "    \"FID_農業土地覆蓋_衛判_會籍地_2025\",\n",
    "    [\"FID_農業土地覆蓋_衛判_會籍地_2025\",\"PARCEL_NO\",\"Sum_area_inter\"]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 10:34:56\",\"Adding 受益地 to 農業土地覆蓋_衛判_會籍地_2025...\",\"Succeeded at 2026年4月2日 上午 10:34:57 (Elapsed Time: 0.29 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'merge_lyr'>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 建新欄位：\"受益地\"\n",
    "arcpy.management.AddField(\n",
    "    merge_lyr,\n",
    "    \"受益地\",\n",
    "    \"TEXT\",\n",
    "    field_length=2\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 10:37:49\",\"Succeeded at 2026年4月2日 上午 10:38:36 (Elapsed Time: 47.22 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'merge_lyr'>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 函數判斷 \"坵塊與受益地交集面積/原坵塊面積>0.8\" 為受益地\n",
    "code_block = \"\"\"\n",
    "def f(a, b):\n",
    "    if a and b and a / b > 0.8:\n",
    "        return '是'\n",
    "    else:\n",
    "        return '否'\n",
    "\"\"\"\n",
    "expression = 'f(!SUM_area_inter!, !Shape_Area!)'\n",
    "\n",
    "arcpy.management.CalculateField(\n",
    "    in_table=merge_lyr,\n",
    "    field=\"受益地\",\n",
    "    expression=expression,\n",
    "    expression_type=\"PYTHON3\",\n",
    "    code_block=code_block\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 10:47:19\",\"Succeeded at 2026年4月2日 上午 10:47:19 (Elapsed Time: 0.11 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'true'>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ==================執行Spatial Join對照水利小組編號====================\n",
    "# 讀取水利小組範圍圖層\n",
    "water_group_fc = r\"Z:\\91_數位發展處\\01_資料專區\\80_GIS圖資\\一所\\農水署灌區、圳路圖_112年版.gdb\\_4水利小組範圍\"\n",
    "sj_fc = \"parcel_sj\"\n",
    "\n",
    "# 執行 Spatial Join (中心點在多邊形內)\n",
    "arcpy.analysis.SpatialJoin(\n",
    "    target_features=merge_fc,\n",
    "    join_features=water_group_fc,\n",
    "    out_feature_class=sj_fc,\n",
    "    join_operation=\"JOIN_ONE_TO_ONE\",\n",
    "    join_type=\"KEEP_ALL\",\n",
    "    match_option=\"HAVE_THEIR_CENTER_IN\"\n",
    ")\n",
    "\n",
    "# 將水利小組編號加入原始圖資\n",
    "arcpy.management.JoinField(\n",
    "    in_data=merge_fc,\n",
    "    in_field=\"OBJECTID\",\n",
    "    join_table=sj_fc,\n",
    "    join_field=\"TARGET_FID\",\n",
    "    fields=[\"水利小組編號\"]\n",
    ")\n",
    "\n",
    "# 刪除中繼圖層\n",
    "arcpy.management.Delete(sj_fc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 10:48:26\",\"Succeeded at 2026年4月2日 上午 10:48:26 (Elapsed Time: 0.19 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'true'>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "# 刪除中繼圖層\n",
    "arcpy.management.Delete(merge_lyr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 11:16:29\",\"Succeeded at 2026年4月2日 上午 11:17:10 (Elapsed Time: 41.03 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'C:\\\\Users\\\\johnnychan\\\\Desktop\\\\gis2\\\\農地土地覆蓋_2025_僅受益地_水利小組.csv'>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 輸出CSV檔案，僅包含受益地且有水利小組編號的資料\n",
    "\n",
    "out_folder = r\"C:\\Users\\johnnychan\\Desktop\\gis2\"\n",
    "out_csv = \"農地土地覆蓋_2025_僅受益地_水利小組.csv\"\n",
    "\n",
    "arcpy.conversion.TableToTable(\n",
    "    in_rows=merge_fc,\n",
    "    out_path=out_folder,\n",
    "    out_name=out_csv,\n",
    "    where_clause=\"水利小組編號 IS NOT NULL AND 受益地 = '是'\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class='gpresult'><h2>Messages</h2><div id='messages' data-messages='[\"Start Time: 2026年4月2日 上午 11:47:39\",\"Succeeded at 2026年4月2日 上午 11:48:17 (Elapsed Time: 37.84 seconds)\"]' data-show='true'><div id = 'default' /></div></div>"
      ],
      "text/plain": [
       "<Result 'C:\\\\Users\\\\johnnychan\\\\Desktop\\\\gis2\\\\農地土地覆蓋_2025.csv'>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 輸出CSV，原彙整結果\n",
    "\n",
    "fc = r\"C:\\Users\\johnnychan\\Desktop\\gis2\\project2025\\2025.gdb\\農業土地覆蓋_衛判_會籍地_2025\"\n",
    "\n",
    "out_folder = r\"C:\\Users\\johnnychan\\Desktop\\gis2\"\n",
    "out_csv = \"農地土地覆蓋_2025.csv\"\n",
    "\n",
    "arcpy.conversion.TableToTable(\n",
    "    in_rows=fc,\n",
    "    out_path=out_folder,\n",
    "    out_name=out_csv,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ArcGISPro",
   "language": "Python",
   "name": "python3"
  },
  "language_info": {
   "file_extension": ".py",
   "name": "python",
   "version": "3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
