├── TwitData ├── Raw │ ├── .gitattributes │ └── testData.csv └── Processed │ ├── TwitDataProcessed.csv │ ├── 2016-2 │ ├── TH_Province_Connection_All.csv │ ├── TH_Province_Connection_Score.csv │ ├── TH_Province_Connection_TwoWay.csv │ ├── TH_Province_Connection_All_SingleCol.csv │ ├── TH_Province_Connection_TwoWay_SingleCol.csv │ └── TH_Province_Connection_All_Norm_Population.csv │ ├── 2016-3 │ ├── TH_Province_Connection_All.csv │ ├── TH_Province_Connection_Score.csv │ ├── TH_Province_Connection_TwoWay.csv │ ├── TH_Province_Connection_All_SingleCol.csv │ ├── TH_Province_Connection_TwoWay_SingleCol.csv │ └── TH_Province_Connection_All_Norm_Population.csv │ ├── .gitattributes │ ├── TH_Province_Connection_Score.csv │ ├── TH_Province_Connection_All_Divide_1000.csv │ ├── TH_Province_Connection_TwoWay_12Hours.csv │ ├── TH_Province_Connection_TwoWay_1Day.csv │ ├── TH_Province_Connection_TwoWay_3Days.csv │ ├── TH_Province_Connection_TwoWay_7Days.csv │ ├── TH_Province_Connection_TwoWay_14Days.csv │ └── TH_Province_Connection_TwoWay_21Days.csv ├── .gitignore ├── Province ├── Shapefile │ ├── TH.dbf │ ├── TH.prj │ ├── TH.qpj │ ├── TH.shx │ └── TH.shp ├── GridProvinces.csv ├── thailand_province_qtree_box_2km.csv ├── thailand_province_qtree_box_5km.csv ├── thailand_province_qtree_struct_2km.csv ├── thailand_province_qtree_struct_5km.csv ├── thailand_province_qtree_box_1km_REFINE_2km.csv ├── thailand_province_qtree_box_500m_REFINE_2km.csv ├── thailand_province_qtree_struct_1km_REFINE_2km.csv ├── thailand_province_qtree_struct_500m_REFINE_2km.csv ├── struct_to_box.py ├── Province from Wiki Html table to CSV │ ├── province_json_to_csv.py │ └── ThailandProvinces_abbr.csv ├── .gitattributes ├── quadtree_compare.py ├── geo_finder.py ├── province_point.py ├── province_qtree.py ├── province_grid.py ├── TH_Province_In_Point.csv ├── TH_Province_Out_Point.csv ├── TH_Province_PolyCentroid_Point.csv ├── provinces.py ├── grid_refinement.py └── province_qtree_shapefile.py ├── Visualize ├── Images │ ├── Tracking.png │ ├── Common UID.png │ ├── Plane History.png │ ├── Tweet frequency.png │ ├── Magnitude Diff.png │ ├── Magnitude Plus.png │ ├── Tracking Flight.png │ ├── Two way connection.png │ ├── Two way landscape.png │ ├── User per province.png │ ├── After Plane History.png │ ├── Common UID Round 1000.png │ ├── Common UID landscape.png │ ├── Living provinces per user.png │ ├── Chiang Mai Inbound Flight.png │ ├── Common UID Norm Population.png │ ├── Common UID Norm Total Common.png │ ├── Magnitude Diff landscape.png │ ├── Magnitude Plus landscape.png │ ├── Plane History landscape.png │ ├── Thailand Provinces Quadtree.png │ ├── Tweet frequency by day in week.png │ ├── After Plane History landscape.png │ ├── Chiang Mai Inbound Flight (Zoom).png │ ├── Common UID Round 1000 landscape.png │ ├── Connection score Natural Breaks.png │ ├── Thailand Provinces Quadtree Zoom.png │ ├── Travel frequency between province.png │ ├── Tweet frequency during the day.png │ ├── Common UID Norm Population landscape.png │ ├── Connection score Equal Interval 0.5.png │ ├── Connection score Equal Interval 1.0.png │ ├── Connection score Standard Deviation.png │ ├── Common UID Norm Total Common landscape.png │ ├── Connection score Equal Interval 0.5 Histogram.png │ ├── Connection score Equal Interval 1.0 Histogram.png │ ├── Connection score Natural Breaks Histogram.png │ ├── Connection score Standard Deviation Histogram.png │ ├── Thailand Provinces Quadtree Zoom Landscape.png │ ├── Tweet frequency of overall collected data.png │ └── .gitattributes ├── TH_Province_Point.csv ├── QGIS │ ├── TH connection.qgs │ └── TH provinces block.qgs ├── TH_Plane_History_Line.csv ├── TH_Plane_Travel_History_Line.csv ├── TH_Province_Connection_Total_Line.csv ├── TH_Province_Connection_TwoWay_14Days.csv ├── TH_Province_Connection_TwoWay_21Days.csv ├── TH_Province_Connection_TwoWay_30Days.csv ├── TH_Province_Connection_TwoWay_3Days.csv ├── TH_Province_Connection_TwoWay_7Days.csv ├── TH_Province_Connection_TwoWay_Line.csv ├── TH_Province_Connection_Total_Norm_Line.csv ├── TH_Province_Connection_TwoWay_12Hours.csv ├── TH_Province_Connection_TwoWay_1Day_Line.csv ├── TH_Province_Connection_Total_Norm_Overall_Conn.csv ├── TH_Province_Connection_Total_Magnitude_Diff_Line.csv ├── .gitattributes ├── user_travel_freq_plot.py ├── freq_by_time_plot.py └── province_connection_plot.py ├── connection_table_to_column.py ├── uid_tracker.py ├── LICENSE ├── split_data_bydate.py ├── province_connection_score.py ├── twit_extract_feature.py ├── README.md ├── user_tracker.py ├── user_travel_filter.py └── province_connection_table.py /TwitData/Raw/.gitattributes: -------------------------------------------------------------------------------- 1 | testData.csv filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.gz 3 | *test*.py 4 | Keys.txt 5 | all.csv 6 | AllTwitData.csv 7 | *.~lock.* 8 | *.qgs~ 9 | 2016-2.csv 10 | 2016-3.csv 11 | -------------------------------------------------------------------------------- /Province/Shapefile/TH.dbf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:59593cb7669497704c90a48a8c9373eb16544bfa497c3aaa6365ab086f78aabc 3 | size 9587 4 | -------------------------------------------------------------------------------- /Province/Shapefile/TH.prj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:98aaf3d1c0ecadf1a424a4536de261c3daf4e373697cb86c40c43b989daf52eb 3 | size 143 4 | -------------------------------------------------------------------------------- /Province/Shapefile/TH.qpj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1de411dcdeedce3219242306fc29bfa1d7fa08883e4ff6779baf798ec50d1657 3 | size 257 4 | -------------------------------------------------------------------------------- /Province/Shapefile/TH.shx: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8b87fd823a9ed464b0edbd7328824e1363b3fa8f299cf05f3e48b1f2da1fc412 3 | size 716 4 | -------------------------------------------------------------------------------- /Province/GridProvinces.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ee28b37b07f861b04d153cfd9523f4413bf775b4bdec57e9007358a4287c489f 3 | size 193546 4 | -------------------------------------------------------------------------------- /Province/Shapefile/TH.shp: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f156583f59326d7a84127aee63d58b470d1f23a23802ff3b2765cbf8f4ebf1ee 3 | size 14789228 4 | -------------------------------------------------------------------------------- /TwitData/Raw/testData.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5bea73758f4c631c26798b513f1a663b064b3d946b862c7c6d1ed4fe191c6fe0 3 | size 2260354 4 | -------------------------------------------------------------------------------- /Visualize/Images/Tracking.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:218aec12657f7b9d42545e04209d90172d6e5a64efaeede3183db7bcd23f4707 3 | size 5369363 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Point.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b9c93559a5186f55d24ab9bb30531ea5a9afe6d3161925a60474ebdc873aee7c 3 | size 2946 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6dc6165f636ea949a3bef438f37bc4063fdb34873bcb46cdc1ede80abc9a12cd 3 | size 2858379 4 | -------------------------------------------------------------------------------- /Visualize/Images/Plane History.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e1324763174e194ae4de47d90c1044d5d8ea76c0bbc11e9e1d04d07fa851a62c 3 | size 8923293 4 | -------------------------------------------------------------------------------- /Visualize/Images/Tweet frequency.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6212fe240230086c86204ccdb3a8d5caa41e419a3923d19acf870dfc650495bb 3 | size 63913 4 | -------------------------------------------------------------------------------- /Visualize/QGIS/TH connection.qgs: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b600a834edef11efcbd5c30b66a7ef8c090d5db8ba5427b9b88f3e4d0dea350a 3 | size 698564 4 | -------------------------------------------------------------------------------- /Visualize/Images/Magnitude Diff.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5113dddd0ad6d4e5622775321940b38484bd26f84fe18b79cf7092a3b31eb272 3 | size 2121424 4 | -------------------------------------------------------------------------------- /Visualize/Images/Magnitude Plus.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e1c97916414ee8a980e28de870df872deb37cad3df83051bb85d6505a599c329 3 | size 1472460 4 | -------------------------------------------------------------------------------- /Visualize/Images/Tracking Flight.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e67b14833ee885b1ecc78211e7effe1a0f13fef48b8ef1fd00ed1c6cac09bc61 3 | size 4194766 4 | -------------------------------------------------------------------------------- /Visualize/Images/Two way connection.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5a87119eed991cb4fd750836bb4ed270e5d7c397fd94be6cd738b87686208397 3 | size 1985562 4 | -------------------------------------------------------------------------------- /Visualize/Images/Two way landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d30f20e7c71f02eb01a4dd00ddf871631fa52f08cac3d6af428c34778e1b4ed1 3 | size 3798306 4 | -------------------------------------------------------------------------------- /Visualize/Images/User per province.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c7bb95f25595b47f434b90bb9aae0e12d3d5cf990bb5267a62fac6d9ee31399b 3 | size 140898 4 | -------------------------------------------------------------------------------- /Visualize/QGIS/TH provinces block.qgs: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c8d719640b3608d85493f26db2026780a523687945d3ed3133e01d535d737e4f 3 | size 24356 4 | -------------------------------------------------------------------------------- /Visualize/TH_Plane_History_Line.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9109747b7405c686e75861c620e9fbb30000acbcbfaf4a1c3cbf288b64f4c7f4 3 | size 9294505 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_box_2km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b90a9c7a6aeec68c932b54e0fcb3d1e195513bb63e13c4adb834796f3965561d 3 | size 9389518 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_box_5km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5dc1036d4a053917c01c065072972f1ba041984eae6b9e0c6dda31f87f76d350 3 | size 4360331 4 | -------------------------------------------------------------------------------- /TwitData/Processed/TwitDataProcessed.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:002f15084fbbeed4008b0a43a369b0c86d685718b0333479f297efa5421e7f67 3 | size 8316431 4 | -------------------------------------------------------------------------------- /Visualize/Images/After Plane History.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c900671d98f68322635f0234b83f94a0fc65b3236672b8414e6cb4d5117feed7 3 | size 7949002 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID Round 1000.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4da21c7cf6a6ff4561df0c22f3ea6b30c8c801c0f7e51199f5affad629f31c54 3 | size 1037176 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:106d061356aa2ca463a270fba31c39d60e6671675b79b5bd5c6d6e789e912fdc 3 | size 5942486 4 | -------------------------------------------------------------------------------- /Visualize/Images/Living provinces per user.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3a7196d16e40d4df9e499ce9962ef34311378e7ab7a56e2764c3a291bc7215f6 3 | size 57976 4 | -------------------------------------------------------------------------------- /Visualize/TH_Plane_Travel_History_Line.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bc01fbcb1caae45d9af04ee1176e18d05de3314467584ce7f9270b1706d46b65 3 | size 97291041 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_struct_2km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eb654534af133d91ff2d1e6edec036e504d9b3b11cac98dd08cbc9a695ea0943 3 | size 8678917 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_struct_5km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9fb293a831ea719a16cd7c3b639b8d1c1cf12f2bc340a1922b5e1d6d66115f12 3 | size 3995125 4 | -------------------------------------------------------------------------------- /Visualize/Images/Chiang Mai Inbound Flight.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e7d01b81b1d0708f33d7ed06139d83f77b2699d0d802e1d562b6fb188df53d63 3 | size 8436464 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID Norm Population.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9f0ecaedb72f9bd148b3c5f14afb6a2f72e9fc2cd6f4196fe1b45f111bd24e31 3 | size 4419912 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID Norm Total Common.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cb65b4ea4661f8437da6b713fd377d8fef3c977f45dae2c964c181bf196cd22b 3 | size 4663235 4 | -------------------------------------------------------------------------------- /Visualize/Images/Magnitude Diff landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4fe14c8f80092916c42c040cb6fb88bb18acd6eb3fd014221a2c9ae0c20dae21 3 | size 3207513 4 | -------------------------------------------------------------------------------- /Visualize/Images/Magnitude Plus landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:71011e5fbf230ea1936530cedc61c9b61dd284d4ea70f27dc032d2f9488f187e 3 | size 2343061 4 | -------------------------------------------------------------------------------- /Visualize/Images/Plane History landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:711bc90e7226511d031f48f64bec2d1d81e548bc2acb3baa9b7e8ec8858dbc32 3 | size 13508080 4 | -------------------------------------------------------------------------------- /Visualize/Images/Thailand Provinces Quadtree.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:124544db8d81999e338be0f83e5a2abe8e998646600df763335a721e36253aaf 3 | size 4101836 4 | -------------------------------------------------------------------------------- /Visualize/Images/Tweet frequency by day in week.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a384b5ad67e61dc62e1f000b832dc01c5fb5a7392e4c416e656c610316af38fa 3 | size 64550 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_Total_Line.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1aea699ae8fb8399afbea68fe0b94484868e79a506346fa18b77700e03e2ade3 3 | size 570811 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_14Days.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:712bfd09a719e749a7b22a126ce3a1d180e475b20cdf32749346ac38a13ae370 3 | size 567475 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_21Days.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:292f4bd03218c8ae9b3ea0a84401adeadfca73a0784f56d9051139956b5e57f4 3 | size 567564 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_30Days.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1682cef3140208baf1d5e0248588e9527ea546f6ad61e7b11927964b5e85f4f6 3 | size 567631 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_3Days.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e9f9d58b43e876403ac05c1937af4712e1ea4940860fcc674bfa0b12ae08dbd5 3 | size 566946 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_7Days.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aeea2ec772abfce589e0aa37cc9ec89d5c9bb2ec17d2a47f639bbc55af31557a 3 | size 567274 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_Line.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:72d22a74777cdb658446190934d18d24a506b2f89dc172087356e617946c4b00 3 | size 567789 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-2/TH_Province_Connection_All.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:032332693eecdec3a79f0532f04a5c62dfe7db458b7b8e85c1ece99265d5d6b9 3 | size 15821 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-3/TH_Province_Connection_All.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:62149227c893e89fe582fccf7d2ac5701743b16be18822ed73d2090a25bb5b81 3 | size 16207 4 | -------------------------------------------------------------------------------- /Visualize/Images/After Plane History landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:726a6b03010f16a87198b6291187b7babe830095af9ecdaf13212cd37d7af321 3 | size 13875575 4 | -------------------------------------------------------------------------------- /Visualize/Images/Chiang Mai Inbound Flight (Zoom).png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3353dff995bff669bea1a22677326b983d2fef408441c31ba0c79620c55839f5 3 | size 17595974 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID Round 1000 landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:09e21350567979d6df17fcb378088ad718e8db0e07566382eb7b44f130034709 3 | size 1508348 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Natural Breaks.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:af34d6dde568925be988e95254d4ebdda8f7d5c7ec294719d6b28a27b619518f 3 | size 826715 4 | -------------------------------------------------------------------------------- /Visualize/Images/Thailand Provinces Quadtree Zoom.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f23128c074c63b5306ee9c56a5b0a4b34897f34f6ebbc0ad6d9e95747f6ed27f 3 | size 5026606 4 | -------------------------------------------------------------------------------- /Visualize/Images/Travel frequency between province.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fef3507fb23e10914c08dfa4293746b358e731e17058bee6e1548427825e51cf 3 | size 55554 4 | -------------------------------------------------------------------------------- /Visualize/Images/Tweet frequency during the day.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:05eef190313f11d7427c5e3f154aeb3ca4601f3809e79323d47ba251543fc26c 3 | size 267809 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_Total_Norm_Line.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c68eefa5a5c701808a4fbc90c9ea0a56900fe7ff710deef157d2bd4651aab89b 3 | size 637221 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_12Hours.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cad1847feb50924f2e581434e53e5e3c9208ca6633595d1a81c2341d937b499c 3 | size 566305 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_TwoWay_1Day_Line.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7cef28601b801d8c64657fa860c0827912b1eb6256b2d179e3e3942e088053f2 3 | size 566530 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_box_1km_REFINE_2km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:070edb35105b186d41b36d5152b3a7c29db49cf05980d74b071487d31aafa6f9 3 | size 21085094 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_box_500m_REFINE_2km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:124bb45d414a57fb6f21719338ed64e92421528842133e48dd007ef5f391199e 3 | size 45561825 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_struct_1km_REFINE_2km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4c10acacade51bbb8d5c59d6ff4596e7ab62755df0157ad7fb95718a31aae4d6 3 | size 20316490 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-2/TH_Province_Connection_Score.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:563af098cc40577e49e01e69de0b731b4aa20b67cda5ce2d2269119526e80db8 3 | size 6230 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-2/TH_Province_Connection_TwoWay.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d1afd5b1715ab0d460757c6d39483227ba1f9e1dc7f6aec41ff00aa0abf7860e 3 | size 14487 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-3/TH_Province_Connection_Score.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:77636c9ca373199b537839fe634e6344cbd89efc12e277b296fa05250e3ae93b 3 | size 6190 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-3/TH_Province_Connection_TwoWay.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fda20d519359fe788ef17dc0040ab283b35d95a202d3032c7f9b1a52ec8dec67 3 | size 14560 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID Norm Population landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ab6abed8da1a1068cb6461146203e71155f214dd568d71c700402f27a24f19bb 3 | size 8961974 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Equal Interval 0.5.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bbe7bb17bc0113ba6dfc9acf25cca8579df20f825515ade638837bc8b31c660b 3 | size 842006 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Equal Interval 1.0.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3373c818a4b3dc4c247a93416169f93a081fc74bcba1acfd10cfeaf13ba34a16 3 | size 821248 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Standard Deviation.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:966b2ad4d6c2e0a78b42f9bea7af5d07a36180075c4e7b2f1796c4272a287af9 3 | size 858906 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_Total_Norm_Overall_Conn.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bd82d5e322e160d194eef049a23b08dee159fc0bcda7264c379404d9a415936b 3 | size 638642 4 | -------------------------------------------------------------------------------- /Province/thailand_province_qtree_struct_500m_REFINE_2km.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2159e458f5827c294321044eb4876301597861b6d62363051a07eaf80abdb52b 3 | size 43175620 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-2/TH_Province_Connection_All_SingleCol.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fc62b4be9914070d9709d119c0f58e65f261f818d95eca295d0b2881ad090143 3 | size 31939 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-3/TH_Province_Connection_All_SingleCol.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:22270ba8a5fa76d0fcb760498451b7dfc767f54f92c93a492fe6964dc9e8cab9 3 | size 32325 4 | -------------------------------------------------------------------------------- /Visualize/Images/Common UID Norm Total Common landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6a9d0fc83315a6f3aa2724c1963552e75eed43d8132488b45f2c491908c0fe4a 3 | size 10975391 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Equal Interval 0.5 Histogram.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:df957f814fa966cfb491ddf502713cc1e5fbbfad487f406af98a90ccfd16f57b 3 | size 15674 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Equal Interval 1.0 Histogram.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:847af2241f1098ad2a7d4befa8c7c0d76aad5d0cbbcd0b7f054c706b608297e8 3 | size 13082 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Natural Breaks Histogram.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:77c6363538e776fa339ec3dfdd4ba2e6325fc1c964948618730639d8a99a3ba5 3 | size 19577 4 | -------------------------------------------------------------------------------- /Visualize/Images/Connection score Standard Deviation Histogram.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e10558091b03a3695417d3c5f6eefaa10ff62079629f70e9560a7f9a147650df 3 | size 19352 4 | -------------------------------------------------------------------------------- /Visualize/Images/Thailand Provinces Quadtree Zoom Landscape.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:18c24aeded0c4c4523845d08bdd2a40950900a5c0490b0642b8d6a760c6a5f5e 3 | size 7690403 4 | -------------------------------------------------------------------------------- /Visualize/Images/Tweet frequency of overall collected data.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:82022edff14a1917ecccb63fe8ccb65c6f34974b5631e20dd0a0d22551cea42f 3 | size 127846 4 | -------------------------------------------------------------------------------- /Visualize/TH_Province_Connection_Total_Magnitude_Diff_Line.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a787a20d2f97622b40ce98bf19944d41605041b2170c79a210e65d27a6895261 3 | size 286363 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-2/TH_Province_Connection_TwoWay_SingleCol.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f9352abe4b78e738dfbd5c4f8a4c4a79ebc3e98d6741b6470b92832c6248cf80 3 | size 30605 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-3/TH_Province_Connection_TwoWay_SingleCol.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:747ae65343cbe166e6fb4e1421032a55f6202414c204f6e5c6092c591c5651e7 3 | size 30678 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-2/TH_Province_Connection_All_Norm_Population.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d5e0a10ffcb4d0bfea61c52a42d7e592b022ec36e97b5085aabb6aa4109e5200 3 | size 87961 4 | -------------------------------------------------------------------------------- /TwitData/Processed/2016-3/TH_Province_Connection_All_Norm_Population.csv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:057c094725ed08dfb5b468db2ab41cc97784f97a8f932ec3550ff7b2f9aabe82 3 | size 90239 4 | -------------------------------------------------------------------------------- /Province/struct_to_box.py: -------------------------------------------------------------------------------- 1 | from province_qtree_shapefile import * 2 | import quad_tree 3 | 4 | 5 | if __name__ == '__main__': 6 | 7 | if len(sys.argv) < 3: 8 | print 'Please insert qTreeStruct.csv and output file name (qTreeBox.csv).' 9 | exit() 10 | 11 | importer = QuadTreeImporter(csvFile = sys.argv[1], isDict = True) 12 | qvTree = importer.rootNode 13 | print 'Total nodes:', qvTree.CountTotalNode() 14 | print 'Error:', qvTree.ErrorCheck() 15 | qvTree.WriteBoxCSVStart(csvFileName = sys.argv[2], optimizeGridOutput = True) 16 | -------------------------------------------------------------------------------- /connection_table_to_column.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.insert(0, './Visualize') 3 | sys.path.insert(1, './Province') 4 | import csv 5 | from province_connection_plot import readConnectionTable 6 | 7 | if __name__ == '__main__': 8 | if len(sys.argv) < 3: 9 | print 'Please insert connection table.csv and output filename' 10 | exit() 11 | 12 | pvConnDict = readConnectionTable(sys.argv[1]) 13 | rowWriter = csv.writer(open(sys.argv[2], 'wb'), delimiter=',') 14 | for pvConn in pvConnDict.values(): 15 | for pv in pvConn.values(): 16 | rowWriter.writerow([pv]) 17 | -------------------------------------------------------------------------------- /Province/Province from Wiki Html table to CSV/province_json_to_csv.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import json 3 | import sys 4 | 5 | # argv 1: Input json file, http://convertjson.com/html-table-to-json.htm 6 | # argv 2: Ouput as csv 7 | 8 | if( len(sys.argv) < 3): 9 | print ('Please input json file and output') 10 | exit() 11 | 12 | with open(sys.argv[1]) as datafile: 13 | data = json.load(datafile) 14 | 15 | spamwriter = csv.writer(open(sys.argv[2], 'a'), delimiter=',') 16 | # Write out in order (province name, Abbr, Index) 17 | count = 1 18 | spamwriter.writerow(['ProvinceName', 'Abbr', 'Index']) 19 | for province in data: 20 | spamwriter.writerow([province['Name'], province['Abbr.[citation needed]'], count]) 21 | count += 1 22 | -------------------------------------------------------------------------------- /uid_tracker.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import csv 3 | from user_tracker import * 4 | 5 | if __name__ == '__main__': 6 | if len(sys.argv) < 3: 7 | print 'Please insert twitDataProcessed.csv, output filename.csv' 8 | exit() 9 | 10 | idList = [] 11 | wantInput = True 12 | while wantInput: 13 | id = raw_input('Track UID (leave blank if end): ') 14 | if len(id) == 0: 15 | wantInput = False 16 | else: 17 | idList.append(int(id)) 18 | 19 | if len(idList) == 0: 20 | exit() 21 | 22 | userTracker = UserTracker(twitDataCsv = sys.argv[1], focusList = idList) 23 | writer = csv.DictWriter(open(sys.argv[2], 'wb'), delimiter = ',', fieldnames=['uid', 'epoch', 'prov', 'lon', 'lat']) 24 | for user in userTracker.uidList.values(): 25 | for hist in user.history.values(): 26 | writer.writerow({ 27 | 'uid': user.uid 28 | , 'epoch' : hist.time 29 | , 'prov' : hist.name 30 | , 'lon' : hist.point.x 31 | , 'lat' : hist.point.y 32 | }) 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Takkasila Saichol 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Province/.gitattributes: -------------------------------------------------------------------------------- 1 | thailand_province_q_box_1km_REFINE.csv filter=lfs diff=lfs merge=lfs -text 2 | thailand_province_qtree_struct_1km_REFINE.csv filter=lfs diff=lfs merge=lfs -text 3 | GridProvinces.csv filter=lfs diff=lfs merge=lfs -text 4 | thailand_province_qtree_box_1km_REFINE_2km.csv filter=lfs diff=lfs merge=lfs -text 5 | thailand_province_qtree_box_2km.csv filter=lfs diff=lfs merge=lfs -text 6 | thailand_province_qtree_box_5km.csv filter=lfs diff=lfs merge=lfs -text 7 | thailand_province_qtree_struct_1km_REFINE_2km.csv filter=lfs diff=lfs merge=lfs -text 8 | thailand_province_qtree_struct_2km.csv filter=lfs diff=lfs merge=lfs -text 9 | thailand_province_qtree_struct_5km.csv filter=lfs diff=lfs merge=lfs -text 10 | thailand_province_qtree_box_500m_REFINE_2km.csv filter=lfs diff=lfs merge=lfs -text 11 | thailand_province_qtree_struct_500m_REFINE_2km.csv filter=lfs diff=lfs merge=lfs -text 12 | Shapefile/TH.dbf filter=lfs diff=lfs merge=lfs -text 13 | Shapefile/TH.prj filter=lfs diff=lfs merge=lfs -text 14 | Shapefile/TH.qpj filter=lfs diff=lfs merge=lfs -text 15 | Shapefile/TH.shp filter=lfs diff=lfs merge=lfs -text 16 | Shapefile/TH.shx filter=lfs diff=lfs merge=lfs -text 17 | -------------------------------------------------------------------------------- /Province/quadtree_compare.py: -------------------------------------------------------------------------------- 1 | from geo_finder import * 2 | import csv 3 | 4 | if __name__ == '__main__': 5 | 6 | if(len(sys.argv) < 4): 7 | print 'Please insert QtreeStruct1, QtreeStruct2, TwitData' 8 | exit() 9 | 10 | 11 | twitCsvReader = csv.reader(open(sys.argv[3], 'rb'), delimiter = ',') 12 | 13 | geoFinder1 = GeoFinder(sys.argv[1], isTuple = True) 14 | geoFinder2 = GeoFinder(sys.argv[2], isTuple = True) 15 | 16 | firstLine = True 17 | count = 0 18 | neCount = 0 19 | for row in twitCsvReader: 20 | if firstLine: 21 | firstLine = False 22 | continue 23 | lat = float(row[1]) 24 | lon = float(row[0]) 25 | 26 | res1 = geoFinder1.FindProvinceByLatLon_Estimate(lat = lat, lon = lon) 27 | res2 = geoFinder2.FindProvinceByLatLon_Estimate(lat = lat, lon = lon) 28 | if res1 != 'NULL': 29 | res1 = res1[0][1] 30 | 31 | if res2 != 'NULL': 32 | res2 = res2[0][1] 33 | 34 | if res1 != res2: 35 | neCount += 1 36 | 37 | count += 1 38 | 39 | print '{} / {}'.format(neCount, count) 40 | print str((float(neCount)/count)*100) + '%' 41 | -------------------------------------------------------------------------------- /TwitData/Processed/.gitattributes: -------------------------------------------------------------------------------- 1 | TwitDataProcessed.csv filter=lfs diff=lfs merge=lfs -text 2 | ThailandProvinceConnection.csv filter=lfs diff=lfs merge=lfs -text 3 | ThailandProvinceConnection_norm_population.csv filter=lfs diff=lfs merge=lfs -text 4 | 2016-2/TH_Province_Connection_All.csv filter=lfs diff=lfs merge=lfs -text 5 | 2016-2/TH_Province_Connection_All_Norm_Population.csv filter=lfs diff=lfs merge=lfs -text 6 | 2016-2/TH_Province_Connection_All_SingleCol.csv filter=lfs diff=lfs merge=lfs -text 7 | 2016-2/TH_Province_Connection_Score.csv filter=lfs diff=lfs merge=lfs -text 8 | 2016-2/TH_Province_Connection_TwoWay.csv filter=lfs diff=lfs merge=lfs -text 9 | 2016-2/TH_Province_Connection_TwoWay_SingleCol.csv filter=lfs diff=lfs merge=lfs -text 10 | 2016-3/TH_Province_Connection_All.csv filter=lfs diff=lfs merge=lfs -text 11 | 2016-3/TH_Province_Connection_All_Norm_Population.csv filter=lfs diff=lfs merge=lfs -text 12 | 2016-3/TH_Province_Connection_All_SingleCol.csv filter=lfs diff=lfs merge=lfs -text 13 | 2016-3/TH_Province_Connection_Score.csv filter=lfs diff=lfs merge=lfs -text 14 | 2016-3/TH_Province_Connection_TwoWay.csv filter=lfs diff=lfs merge=lfs -text 15 | 2016-3/TH_Province_Connection_TwoWay_SingleCol.csv filter=lfs diff=lfs merge=lfs -text 16 | -------------------------------------------------------------------------------- /split_data_bydate.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import csv 3 | import time as t 4 | from datetime import date, timedelta as td 5 | 6 | if __name__ == '__main__': 7 | if len(sys.argv) < 3: 8 | print 'Please insert processed data.csv and output file name.csv' 9 | exit() 10 | 11 | startDate = t.strptime(raw_input('Start date (YYYY-M-D): '), '%Y-%m-%d') 12 | startDate = date(startDate.tm_year, startDate.tm_mon, startDate.tm_mday) 13 | endDate = t.strptime(raw_input('End date (YYYY-M-D): '), '%Y-%m-%d') 14 | endDate = date(endDate.tm_year, endDate.tm_mon, endDate.tm_mday) 15 | 16 | csvReader = csv.DictReader(open(sys.argv[1], 'rb'), fieldnames=['uid', 'lat', 'lon', 'province', 'province_abbr', 'province_abbr_index', 'epoch', 'date', 'time'], delimiter = ',') 17 | csvReader.next() 18 | csvWriter = csv.DictWriter(open(sys.argv[2], 'wb'), fieldnames=['uid', 'lat', 'lon', 'province', 'province_abbr', 'province_abbr_index', 'epoch', 'date', 'time'], delimiter = ',') 19 | csvWriter.writeheader() 20 | for row in csvReader: 21 | day = t.strptime(row['date'],'%Y-%m-%d') 22 | day = date(day.tm_year, day.tm_mon, day.tm_mday) 23 | if (day - startDate).days >= 0 and (endDate - day).days >= 0: 24 | csvWriter.writerow(row) 25 | -------------------------------------------------------------------------------- /Visualize/.gitattributes: -------------------------------------------------------------------------------- 1 | TH_Province_Connection_Total_Line.csv filter=lfs diff=lfs merge=lfs -text 2 | TH_Province_Connection_Total_Norm_Line.csv filter=lfs diff=lfs merge=lfs -text 3 | TH_Province_Connection_TwoWay_12Hours.csv filter=lfs diff=lfs merge=lfs -text 4 | TH_Province_Connection_TwoWay_14Days.csv filter=lfs diff=lfs merge=lfs -text 5 | TH_Province_Connection_TwoWay_1Day_Line.csv filter=lfs diff=lfs merge=lfs -text 6 | TH_Province_Connection_TwoWay_21Days.csv filter=lfs diff=lfs merge=lfs -text 7 | TH_Province_Connection_TwoWay_30Days.csv filter=lfs diff=lfs merge=lfs -text 8 | TH_Province_Connection_TwoWay_3Days.csv filter=lfs diff=lfs merge=lfs -text 9 | TH_Province_Connection_TwoWay_7Days.csv filter=lfs diff=lfs merge=lfs -text 10 | TH_Province_Connection_TwoWay_Line.csv filter=lfs diff=lfs merge=lfs -text 11 | TH_Province_Point.csv filter=lfs diff=lfs merge=lfs -text 12 | TH_Plane_TravelHistory_Filtered_Time_Line.csv filter=lfs diff=lfs merge=lfs -text 13 | TH_Plane_TravelHistory_Unfiltered_Time_Line.csv filter=lfs diff=lfs merge=lfs -text 14 | TH_Plane_History_Line.csv filter=lfs diff=lfs merge=lfs -text 15 | TH_Plane_Travel_History_Line.csv filter=lfs diff=lfs merge=lfs -text 16 | QGIS/TH[[:space:]]connection.qgs filter=lfs diff=lfs merge=lfs -text 17 | QGIS/TH[[:space:]]provinces[[:space:]]block.qgs filter=lfs diff=lfs merge=lfs -text 18 | TH_Province_Connection_Total_Magnitude_Diff_Line.csv filter=lfs diff=lfs merge=lfs -text 19 | TH_Province_Connection_Total_Norm_Overall_Conn.csv filter=lfs diff=lfs merge=lfs -text 20 | -------------------------------------------------------------------------------- /Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv: -------------------------------------------------------------------------------- 1 | ProvinceName,Abbr,Index 2 | Amnat Charoen,ACR,1 3 | Ang Thong,ATG,2 4 | Phra Nakhon Si Ayutthaya,AYA,3 5 | Bangkok,BKK,4 6 | Bueng Kan,BKN,5 7 | Buriram,BRM,6 8 | Chonburi,CBI,7 9 | Chachoengsao,CCO,8 10 | Chiang Mai,CMI,9 11 | Chai Nat,CNT,10 12 | Chaiyaphum,CPM,11 13 | Chumphon,CPN,12 14 | Chiang Rai,CRI,13 15 | Chanthaburi,CTI,14 16 | Krabi,KBI,15 17 | Khon Kaen,KKN,16 18 | Kamphaeng Phet,KPT,17 19 | Kanchanaburi,KRI,18 20 | Kalasin,KSN,19 21 | Loei Province,LEI,20 22 | Lampang,LPG,21 23 | Lamphun,LPN,22 24 | Lopburi Province,LRI,23 25 | Mukdahan,MDH,24 26 | Maha Sarakham,MKM,25 27 | Mae Hong Son,MSN,26 28 | Nan,NAN,27 29 | Nonthaburi,NBI,28 30 | Nong Bua Lam Phu,NBP,29 31 | Nong Khai,NKI,30 32 | Nakhon Ratchasima,NMA,31 33 | Nakhon Phanom,NPM,32 34 | Nakhon Pathom,NPT,33 35 | Nakhon Si Thammarat,NRT,34 36 | Nakhon Sawan,NSN,35 37 | Narathiwat,NWT,36 38 | Nakhon Nayok,NYK,37 39 | Phetchaburi,PBI,38 40 | Phichit,PCT,39 41 | Prachuap Khiri Khan,PKN,40 42 | Phuket,PKT,41 43 | Phatthalung,PLG,42 44 | Phitsanulok,PLK,43 45 | Phang Nga,PNA,44 46 | Phetchabun,PNB,45 47 | Phrae,PRE,46 48 | Prachinburi,PRI,47 49 | Pathum Thani,PTE,48 50 | Pattani,PTN,49 51 | Phayao,PYO,50 52 | Ratchaburi,RBR,51 53 | Roi Et,RET,52 54 | Ranong,RNG,53 55 | Rayong,RYG,54 56 | Sing Buri,SBR,55 57 | Songkhla,SKA,56 58 | Samut Songkhram,SKM,57 59 | Samut Sakhon,SKN,58 60 | Sa Kaeo,SKW,59 61 | Surat Thani,SNI,60 62 | Sakon Nakhon,SNK,61 63 | Suphan Buri,SPB,62 64 | Samut Prakan,SPK,63 65 | Saraburi,SRI,64 66 | Surin,SRN,65 67 | Sisaket,SSK,66 68 | Sukhothai,STI,67 69 | Satun,STN,68 70 | Tak,TAK,69 71 | Trang,TRG,70 72 | Trat,TRT,71 73 | Ubon Ratchathani,UBN,72 74 | Udon Thani,UDN,73 75 | Uttaradit,UTD,74 76 | Uthai Thani,UTI,75 77 | Yala,YLA,76 78 | Yasothon,YST,77 79 | -------------------------------------------------------------------------------- /Province/geo_finder.py: -------------------------------------------------------------------------------- 1 | import sys 2 | reload(sys) 3 | sys.setdefaultencoding('utf-8') 4 | import json 5 | import urllib2 6 | from quad_tree import * 7 | 8 | GeoCodeAPIKey = 'INSERT YOUR GEOCODE KEY' 9 | class GeoFinder: 10 | def __init__(self, province_qtree_csv, isTuple = False): 11 | qTreeImporter = QuadTreeImporter(province_qtree_csv, isTuple) 12 | self.provinceQuadTree = qTreeImporter.rootNode 13 | 14 | @staticmethod 15 | def FindCountryAndProvinceByLatLon_Real(lat, lon): 16 | 'Find province using Google GeoCodeAPI request. Support UFT-8?' 17 | gotData = False 18 | country = 'NULL' 19 | province = 'NULL' 20 | while not gotData: 21 | try: 22 | findUrl = 'https://maps.googleapis.com/maps/api/geocode/json?latlng='+str(lat)+','+str(lon)+'&key='+GeoCodeAPIKey 23 | print findUrl 24 | data = json.load(urllib2.urlopen(findUrl)) 25 | gotData = True 26 | except: 27 | print('Trying to retrive GeoCode') 28 | # Comment 'raise' to make your program unstopable 29 | raise 30 | 31 | if(data['status'] == 'ZERO_RESULTS'): 32 | return 33 | 34 | # Retrive country 35 | for addrCompo in data["results"][0]['address_components']: 36 | if(addrCompo['types'][0] == 'country'): 37 | country = addrCompo['long_name'] 38 | 39 | # Retrive province 40 | for addrCompo in data["results"][0]['address_components']: 41 | if(addrCompo['types'][0] == 'administrative_area_level_1'): 42 | province = str(addrCompo['long_name']) 43 | 44 | return [country, province] 45 | 46 | def FindProvinceByLatLon_Estimate(self, lat, lon): 47 | return self.provinceQuadTree.findValue(point = Point(lon, lat)) 48 | -------------------------------------------------------------------------------- /province_connection_score.py: -------------------------------------------------------------------------------- 1 | from province_connection_table import * 2 | from province_point import * 3 | 4 | def createProvinceCodeDict(pvAbbrCsv, shapeFile): 5 | pvCodeDict = {} 6 | pvSc = ProvinceSyncer(pvAbbrCsv) 7 | for pv in shapeFile.records(): 8 | pvCodeDict[pvSc.SyncProvinceName(pv[2])] = int(pv[0]) 9 | return pvCodeDict 10 | 11 | if __name__ == '__main__': 12 | if(len(sys.argv) < 5): 13 | print 'Please insert shapefile, provinceAbbr, processed twitdata .csv and output file name.' 14 | exit() 15 | 16 | sf = shapefile.Reader(sys.argv[1]) 17 | pvPHolder = ProvinceCMPointHolder(sf, abbrCsv = './Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv') 18 | provinceHolder = ProvinceHolder() 19 | provinceTable = ProvinceTable(provinceHolder.provinces) 20 | provinceHolder.readDataFromCsv(csvFile = sys.argv[3]) 21 | provinceTable.createTableOfCommonUID() 22 | pvCodeDict = createProvinceCodeDict(sys.argv[2], sf) 23 | 24 | scoreWriter = csv.DictWriter(open(sys.argv[4], 'wb'), delimiter = ',', fieldnames=['name', 'score', 'number of user', 'total connection','point', 'province code']) 25 | scoreWriter.writeheader() 26 | for y in range(len(provinceTable.table)): 27 | totalConn = 0.0 28 | for x in range(len(provinceTable.table[y])): 29 | totalConn += provinceTable.table[y][x] 30 | try: 31 | score = totalConn / len(provinceTable.provinces[y].uidList) 32 | except: 33 | score = 0 34 | 35 | name = provinceTable.provinces[y].name 36 | point = pvPHolder.pvcmDict[name].polyCentroid 37 | 38 | scoreWriter.writerow({ 39 | 'name' : name 40 | , 'score' : score 41 | , 'number of user' : len(provinceTable.provinces[y].uidList) 42 | , 'total connection' : score * len(provinceTable.provinces[y].uidList) 43 | , 'point' : 'POINT('+str(point.x)+' '+str(point.y)+')' 44 | , 'province code' : pvCodeDict[name] 45 | }) 46 | -------------------------------------------------------------------------------- /Province/province_point.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import csv 3 | import shapefile 4 | from province_qtree_shapefile import buildProvinceShape 5 | 6 | class ProvinceCMPoint: 7 | def __init__(self, inP, outP, polyCentroid): 8 | self.inP = inP 9 | self.outP = outP 10 | self.polyCentroid = polyCentroid 11 | 12 | class ProvinceCMPointHolder: 13 | def __init__(self, shapeFileCsv, abbrCsv = './Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv'): 14 | self.pvShapes = buildProvinceShape(shapeFileCsv, abbrCsv) 15 | 16 | self.pvcmDict = {} 17 | for pvShape in self.pvShapes.values(): 18 | self.pvcmDict[pvShape.name] = ProvinceCMPoint( 19 | inP = (pvShape.bbMin + pvShape.bbMax)/2 20 | , outP = pvShape.centroid 21 | , polyCentroid = ((pvShape.bbMin + pvShape.bbMax)/2 + pvShape.centroid)/2 22 | ) 23 | 24 | def writePointCsv(self, fileName = None): 25 | if fileName == None or ('.csv' in fileName): 26 | print 'Please insert province point filename without .csv' 27 | raise 28 | 29 | fieldNames = ['lon', 'lat'] 30 | inPWriter = csv.DictWriter(open(fileName + '_Province_In_Point.csv', 'wb'), delimiter = ',', fieldnames= fieldNames) 31 | outPWriter = csv.DictWriter(open(fileName + '_Province_Out_Point.csv', 'wb'), delimiter = ',', fieldnames= fieldNames) 32 | polyPWriter = csv.DictWriter(open(fileName + '_Province_PolyCentroid_Point.csv', 'wb'), delimiter = ',', fieldnames= fieldNames) 33 | 34 | inPWriter.writeheader() 35 | outPWriter.writeheader() 36 | polyPWriter.writeheader() 37 | 38 | for pvcm in self.pvcmDict.values(): 39 | inPWriter.writerow({ 40 | 'lon' : pvcm.inP.x 41 | , 'lat' : pvcm.inP.y 42 | }) 43 | outPWriter.writerow({ 44 | 'lon' : pvcm.outP.x 45 | , 'lat' : pvcm.outP.y 46 | }) 47 | polyPWriter.writerow({ 48 | 'lon' : pvcm.polyCentroid.x 49 | , 'lat' : pvcm.polyCentroid.y 50 | }) 51 | 52 | if __name__ == '__main__': 53 | if len(sys.argv) < 3: 54 | print 'Please insert shapefile and output filename without .csv' 55 | exit() 56 | 57 | pvPHolder = ProvinceCMPointHolder(shapefile.Reader(sys.argv[1])) 58 | pvPHolder.writePointCsv(sys.argv[2]) 59 | -------------------------------------------------------------------------------- /Province/province_qtree.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import csv 3 | from math import * 4 | from quad_tree import * 5 | from province_grid import * 6 | 7 | def ReadProviGrid(csvFile): 8 | gridProviReader = csv.reader(open(csvFile, 'rb'), delimiter = ',') 9 | proviGrid = [] 10 | proviGrid.append([]) 11 | lat = 0 12 | lon = 1 13 | oldLat = lat 14 | oldLon = lon 15 | for row in gridProviReader: 16 | lat = int(row[0]) 17 | lon = int(row[1]) 18 | if(oldLat != lat): 19 | proviGrid.append([]) 20 | oldLat = lat 21 | if(oldLon != lon): 22 | proviGrid[lat].append(row[2]) 23 | oldLon = lon 24 | 25 | return proviGrid 26 | 27 | if __name__ == '__main__': 28 | 29 | print 'Deprecate, please use the shapefile version.' 30 | if(len(sys.argv) < 2): 31 | print 'Please insert GridProvinces.csv' 32 | exit() 33 | 34 | pvGridData = ReadProviGrid(sys.argv[1]) 35 | 36 | pvGridParm = ProviGridParm( 37 | btmLeft = Point(97.325565, 5.594899) 38 | , topRight = Point(105.655127, 20.445080) 39 | , boxKm = 10 40 | ) 41 | 42 | # Round up to power of 2 43 | nBox = max(pvGridParm.nLatBox, pvGridParm.nLonBox) 44 | maxLevel = int(ceil(log(nBox)/log(2))) 45 | nBox = int(pow(2, maxLevel)) 46 | 47 | print nBox 48 | pvTree = QuadTree( 49 | level = 0 50 | , rect = Rectangle( 51 | btmLeft = Point( 52 | pvGridParm.btmLeft.x 53 | , pvGridParm.topRight.y - pvGridParm.latBoxSize * nBox) 54 | , topRight = Point( 55 | pvGridParm.btmLeft.x + pvGridParm.lonBoxSize * nBox 56 | , pvGridParm.topRight.y) 57 | ) 58 | , maxLevel = maxLevel 59 | ) 60 | 61 | pvTree.Span() 62 | 63 | for iLat in range(pvGridParm.nLatBox): 64 | for iLon in range(pvGridParm.nLonBox): 65 | lat = pvGridParm.topRight.y - pvGridParm.latBoxSize * (0.5 + iLat) 66 | 67 | lon = pvGridParm.btmLeft.x + pvGridParm.lonBoxSize * (0.5 + iLon) 68 | 69 | pvTree.SetValue(point = Point(lon, lat), value = pvGridData[iLat][iLon]) 70 | 71 | pvTree.OptimizeTree() 72 | pvTree.PrintTreeUID() 73 | # Export tree as rectangle by polyline 74 | pvTree.WriteBoxCSVStart(csvFileName = 'thailand_province_q_box_optimize.csv', optimizeGridOutput = True) 75 | 76 | # Export tree as tree structure in csv form 77 | pvTree.exportTreeStructStart('thailand_province_qtree_struct.csv') 78 | -------------------------------------------------------------------------------- /twit_extract_feature.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import sys 3 | import json 4 | import time as t 5 | sys.path.insert(0, './Province') 6 | from geo_finder import * 7 | from provinces import * 8 | 9 | # Export format 10 | # uid, lat, lon, province, province_abbr, province_abbr_index, epoch, date, time 11 | if __name__ == '__main__': 12 | 13 | if(len(sys.argv) < 4): 14 | print 'Please insert Input: TwitData.csv, qTreeStruct.csv and Output filename, recommend: TwitDataProcessed.csv' 15 | exit() 16 | 17 | provinces = ReadProvinceCSV('./Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv') 18 | pvNameSyncer = ProvinceSyncer('./Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv') 19 | 20 | # Read file and save as csv (lat, long, epoch, uid, province_name, abbr, province_index) 21 | twitCsvReader = csv.reader(open(sys.argv[1], 'rb'), delimiter=',') 22 | 23 | # Output file 24 | outputFieldName = ['uid', 'lat', 'lon', 'province', 'province_abbr', 'province_abbr_index', 'epoch', 'date', 'time'] 25 | twitCsvWriter = csv.DictWriter(open(sys.argv[3], 'wb'), delimiter=',', fieldnames= outputFieldName) 26 | geoFinder = GeoFinder(province_qtree_csv = sys.argv[2], isTuple = True) 27 | 28 | twitCsvWriter.writeheader() 29 | isFirstLine = True 30 | nullProvinceMap_origin = [] 31 | nullProvinceMap_target = [] 32 | 33 | for row in twitCsvReader : 34 | if(isFirstLine): 35 | isFirstLine = False 36 | continue 37 | 38 | province = geoFinder.FindProvinceByLatLon_Estimate( 39 | lat = float(row[1]) 40 | , lon = float(row[0]) 41 | ) 42 | if province != 'NULL': 43 | province = province[0][1] 44 | 45 | province = pvNameSyncer.SyncProvinceName(province) 46 | 47 | # Find province Abbr, Index 48 | abbr = 'NULL' 49 | index = 'NULL' 50 | for f1 in range(len(provinces)): 51 | if(province == provinces[f1][0]): 52 | abbr = provinces[f1][1] 53 | index = provinces[f1][2] 54 | 55 | if(abbr == 'NULL'): 56 | continue 57 | 58 | dateTime = EpochToDataTime(int(row[2])) 59 | twitCsvWriter.writerow({ 60 | 'uid': int(row[3]) 61 | , 'lat':float(row[1]) 62 | , 'lon':float(row[0]) 63 | , 'province':province 64 | , 'province_abbr':abbr 65 | , 'province_abbr_index':index 66 | , 'epoch':int(row[2]) 67 | , 'date': dateTime['date'] 68 | , 'time': dateTime['time'] 69 | }) 70 | -------------------------------------------------------------------------------- /Visualize/user_travel_freq_plot.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.insert(0, '../') 3 | sys.path.insert(1, '../Province') 4 | from provinces import * 5 | from user_tracker import * 6 | import matplotlib.pyplot as plt 7 | import statistics 8 | import operator 9 | 10 | 11 | # TODO: Update ticks, bars, scale, etc. 12 | if __name__ == '__main__': 13 | 14 | # Plot travel frequency 15 | if(len(sys.argv) < 2): 16 | print 'Please insert: processed twitdata .csv' 17 | exit() 18 | 19 | userTracker = UserTracker(twitDataCsv= sys.argv[1]) 20 | 21 | travelFreq = [0 for x in range(25)] 22 | tweetFreq = [0 for x in range(60)] 23 | provinceFreq = [0 for x in range(20)] 24 | for user in userTracker.uidList.values(): 25 | # travel frequency 26 | try: 27 | travelFreq[len(user.mergeHist) -1] += 1 28 | except: 29 | pass 30 | 31 | # tweet frequency 32 | try: 33 | tweetFreq[len(user.history)] += 1 34 | except: 35 | pass 36 | 37 | # provinces 38 | try: 39 | provinceFreq[len(user.getUniqueProvinceHist())] += 1 40 | except: 41 | pass 42 | 43 | # Plot travel frequency 44 | plt.plot(travelFreq, 'ro', travelFreq, 'b-') 45 | plt.xlabel('Number of travel') 46 | plt.ylabel('Number of user') 47 | plt.xticks(range(len(travelFreq))) 48 | plt.title('Travel between provinces') 49 | plt.show() 50 | 51 | # -------------------------------- 52 | # Plot tweet per UID 53 | plt.plot(tweetFreq, 'ro', tweetFreq, 'b-') 54 | plt.xlabel('Number of tweet') 55 | plt.ylabel('Number of user') 56 | plt.xticks(range(len(tweetFreq))) 57 | plt.title('Tweet frequency') 58 | plt.show() 59 | 60 | # -------------------------------- 61 | # Plot province per UID 62 | plt.plot(provinceFreq, 'ro', provinceFreq, 'b-') 63 | plt.xlabel('Number of provinces') 64 | plt.ylabel('Number of user') 65 | plt.xticks(range(len(provinceFreq))) 66 | plt.title('Living provinces per user') 67 | plt.show() 68 | 69 | # -------------------------------- 70 | # User per province 71 | pvHolder = ProvinceHolder( 72 | province_abbr = '../Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv' 73 | , csvFile = sys.argv[1]) 74 | 75 | pvDict = {} 76 | for province in pvHolder.provinces: 77 | pvDict[province.name] = len(province.uidList) 78 | 79 | pvDict = OrderedDict(sorted(pvDict.items(), key=operator.itemgetter(1), reverse= True)) 80 | 81 | plt.bar(range(len(pvDict)), pvDict.values(), align = 'center') 82 | plt.xticks(range(len(pvDict)), pvDict.keys(), rotation = 'vertical') 83 | plt.xlabel('Province name') 84 | plt.ylabel('Number of user') 85 | plt.title('User per province') 86 | plt.show() 87 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TwitGeoSpa 2 | Geospatial analysis and simulation using Twitter data 3 | 4 | ## Read about my findings [here](https://docs.google.com/presentation/d/11GAJ6EZ7RocWcY3fF4XED8ySo1I-PuE6Ny2v68d6hzM) 5 | https://docs.google.com/presentation/d/11GAJ6EZ7RocWcY3fF4XED8ySo1I-PuE6Ny2v68d6hzM 6 | 7 | ## Utility tools 8 | - ### Finding country and province name with lat, lon 9 | - #### Using Google Geocode API 10 | This will need your [GeocodeAPI credential key](https://developers.google.com/maps/documentation/geocoding/get-api-key). 11 | **file**: `/Province/geo_finder.py` 12 | **usage**: 13 | 14 | ```python 15 | from geo_finder import * 16 | print GeoFinder.FindCountryAndProvinceByLatLon_Real(lat = 13.7563486, lon = 100.4557333) 17 | ``` 18 | ``` 19 | [u'Thailand', 'Krung Thep Maha Nakhon'] 20 | ``` 21 | 22 | - #### Using Quadtree datastructure of provinces 23 | Without regard of requiring no internet connection, this method also come with speed of [Quadtree](https://en.wikipedia.org/wiki/Quadtree) search `O(log(n))`. You will need to provide proper quadtree of province in area of your search. See [below](https://github.com/takkasila/TwitGeoSpa#quadtree) on how to create your own quadtree. 24 | **file**: `/province/geo_finder.py` 25 | **usage**: 26 | 27 | ```python 28 | from geo_finder import * 29 | geoFinder = GeoFinder(province_qtree_csv = './Province/thailand_province_qtree_struct_500m_REFINE_2km.csv', isTuple = True) 30 | print geoFinder.FindProvinceByLatLon_Estimate(lat = 13.7563486, lon = 100.4557333) 31 | print geoFinder.FindProvinceByLatLon_Estimate(lat = 13.9509, lon = 100.5674) 32 | ``` 33 | ``` 34 | [(1.0, 'Bangkok')] 35 | 36 | [(0.46153846153846156, 'Pathum Thani'), (0.3076923076923077, 'Bangkok'), (0.23076923076923078, 'Nonthaburi')] 37 | ``` 38 | 39 | - ### Quadtree 40 | ![](https://raw.githubusercontent.com/takkasila/TwitGeoSpa/master/Visualize/QGIS/Thailand_provinces_qtree.png) 41 | **file**: `/Province/quad_tree.py` 42 | Above is a render of quadtree of provinces in Thailand `/Province/thailand_province_qtree_struct.csv` with scan area of 10 km square. There are two steps on creating your own quadtree. 43 | 44 | 1. #### Scan 45 | **file**: `/Province/province_grid.py` 46 | Insert latitude and longitude of area you want to scan in rectangular form. This process might take a lot of time depends on how precise you want your quadtree will be (scan grid size), how large you want to cover and how fast your internet is (because we're using Geocode API). This will result grid of provinces in csv form `/Provinces/GridProvinces.csv` 47 | 48 | 2. #### Read and Export 49 | **file**: `/Province/province_qtree.py` 50 | Input your result of scanning province grids from the first step. Then program will result quadtree file datastructure contains node and edge of tree in csv format `/Province/thailand_province_qtree_struct.csv`. For general use, export format can be found in `/Province/quad_tree.py`. 51 | -------------------------------------------------------------------------------- /Province/province_grid.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import sys 3 | import math 4 | from geo_finder import * 5 | from quad_tree import Point 6 | from geopy.distance import vincenty 7 | 8 | class ProviGridParm: 9 | def __init__( self 10 | , btmLeft = Point(0,0) 11 | , topRight = Point(1,1) 12 | , boxKm = 1): 13 | 'Note that boxKm represent the largest possible box size due to map projection and corridinate system.' 14 | self.btmLeft = btmLeft 15 | self.topRight = topRight 16 | self.boxKm = float(boxKm) 17 | self.btmRight = Point(x = self.topRight.x, y = self.btmLeft.y) 18 | self.__readjustGrid() 19 | 20 | def __readjustGrid(self): 21 | 'Round up total grid and distKm size to match box size.' 22 | self.latDistKm = vincenty(self.topRight.getTuple()[::-1], self.btmRight.getTuple()[::-1]).km 23 | self.lonDistKm = vincenty(self.btmLeft.getTuple()[::-1], self.btmRight.getTuple()[::-1]).km 24 | self.latDist = self.topRight.y - self.btmLeft.y 25 | self.lonDist = self.topRight.x - self.btmLeft.x 26 | 27 | if self.latDistKm > self.lonDistKm: 28 | # Focus maxLevel on lat 29 | self.maxLevel = int(math.ceil(math.log(self.latDistKm/self.boxKm, 2))) 30 | 31 | else: 32 | # Focus maxLevel on lon 33 | self.maxLevel = int(math.ceil(math.log(self.lonDistKm/ self.boxKm, 2))) 34 | 35 | self.nSideBox = int(math.pow(2, self.maxLevel)) 36 | 37 | # Stretch in -y, +x 38 | self.latBoxSize = self.latDist / self.nSideBox 39 | self.lonBoxSize = self.lonDist / self.nSideBox 40 | 41 | def snapToGrid(self, point): 42 | 'Return top left corner of snapped grid' 43 | diff = point - self.btmLeft 44 | diff.x = math.floor(diff.x / self.lonBoxSize) * self.lonBoxSize 45 | diff.y = math.ceil(diff.y / self.latBoxSize) * self.latBoxSize 46 | return self.btmLeft + diff 47 | 48 | 49 | if __name__ == '__main__': 50 | if(len(sys.argv) < 2): 51 | print('Please insert output GridProvinces.csv') 52 | exit() 53 | 54 | pvGrid = ProviGridParm( 55 | btmLeft = Point(97.325565, 5.594899) 56 | , topRight = Point(105.655127, 20.445080) 57 | , boxKm = 10 58 | ) 59 | print pvGrid.latBoxSize 60 | print pvGrid.lonBoxSize 61 | print pvGrid.nLatBox 62 | print pvGrid.nLonBox 63 | print pvGrid.topRight.x 64 | print pvGrid.btmLeft.y 65 | 66 | startiLat = input('Start iLat (default = 0): ') 67 | startiLon = input('Start iLon (default = 0): ') 68 | proviGridWriter = csv.writer(open(sys.argv[1], 'a'), delimiter=',') 69 | for iLat in range(startiLat,pvGrid.nLatBox): 70 | for iLon in range(pvGrid.nLonBox): 71 | if(iLat == startiLat and iLon < startiLon): 72 | continue 73 | 74 | lat = pvGrid.topRight.y - (iLat+0.5) * pvGrid.latBoxSize 75 | lon = pvGrid.btmLeft.x + (iLon+0.5) * pvGrid.lonBoxSize 76 | province = GeoFinder.FindCountryAndProvinceByLatLon_Real(lat, lon)[1] 77 | # proviGridWriter.writerow([iLat, iLon, province]) 78 | print 'iLat: '+str(iLat)+', iLon: '+str(iLon)+' '+province 79 | -------------------------------------------------------------------------------- /Province/TH_Province_In_Point.csv: -------------------------------------------------------------------------------- 1 | lon,lat 2 | 100.39125283608323,16.285742133250164 3 | 99.58341704336613,11.800431521236533 4 | 104.52536681995309,16.539970720600174 5 | 103.71680041649387,18.109917448290474 6 | 105.00460048890837,15.153535609292936 7 | 98.99551012592863,18.066947669189357 8 | 102.96809647172847,14.963384703790556 9 | 102.84215857088802,17.443871494389924 10 | 98.64515375975171,10.046743003395385 11 | 102.11082959753571,12.810842564189711 12 | 98.60563419859717,16.524222796661746 13 | 101.62185847012272,14.022509782405788 14 | 101.41903060885507,13.577472929942829 15 | 100.0800499861054,7.493941518913092 16 | 101.3717579978399,6.751483678102662 17 | 103.84354859555125,17.430746092150034 18 | 100.54362506045857,17.759484721772978 19 | 102.0968753574211,14.964011715773218 20 | 99.53109128989752,16.38583345190102 21 | 100.52426561183877,14.39175458160953 22 | 103.6688338954124,16.64194373683837 23 | 104.73945273885738,15.910383964313626 24 | 100.48175336436628,17.031722543786405 25 | 101.49343200741671,17.486530427645544 26 | 97.99769633787874,18.725545931259596 27 | 102.46709134139535,16.360197921355688 28 | 104.40535963750023,14.95543716224443 29 | 99.68656491434571,6.810335855877705 30 | 99.91810465376949,19.732438409843887 31 | 103.59071978165383,14.905018144826279 32 | 100.35347169667287,14.620419195599112 33 | 100.7035957073092,13.598671396397194 34 | 100.63152320186956,13.720393141398311 35 | 99.9598221991998,15.622248803170411 36 | 103.81185661785187,15.939058915736359 37 | 99.26651400243871,9.052578387788369 38 | 102.33286650420719,17.225030258743534 39 | 104.41040065875904,15.818117307816726 40 | 103.16880740109812,16.02462617410515 41 | 98.36491239425115,7.839440148047533 42 | 100.84665527909598,18.82380263231748 43 | 100.91279060989356,15.198342863363406 44 | 99.00964187657152,7.935304641713955 45 | 99.95921688243868,18.259998079318493 46 | 99.5959127698157,7.492672738628258 47 | 99.78112971920785,14.571369669509005 48 | 102.57956452076354,12.15953798432946 49 | 99.61630337082553,13.555468881014935 50 | 101.22168842859637,6.148283074829394 51 | 100.41502106953597,13.96455506184535 52 | 99.78554829528883,8.581723258768529 53 | 100.33480817135793,14.918997939803756 54 | 99.96560935232975,13.378573642194734 55 | 104.39418296336598,17.405509474819695 56 | 100.58137517748017,7.113976621500626 57 | 100.1558750626655,19.270715987355544 58 | 101.73193528643989,6.184178487514851 59 | 101.20903101183306,14.236825414040457 60 | 101.88826410717431,16.03101911353362 61 | 99.54539241993382,15.367982585581363 62 | 99.60084954171708,12.952545293334627 63 | 98.1635603330555,8.62009579338908 64 | 101.21354206992507,16.24887980962204 65 | 102.40739363412253,13.716465855893514 66 | 99.08253272062605,10.317095243778557 67 | 100.03669616837956,15.15962230710935 68 | 101.01471327780651,14.658964549642388 69 | 100.64181001483547,14.096185044532248 70 | 101.40751537735291,12.842441741159742 71 | 101.24157676520872,13.048773673478752 72 | 99.50288731387263,18.31211979545654 73 | 99.71178872316331,17.252250686206732 74 | 98.80902604658993,18.694924558161432 75 | 100.22368407202312,13.572659385602352 76 | 102.73438041517196,17.948159044952746 77 | 100.07778433224748,13.913399942588907 78 | 99.03100113728786,14.69307097832726 79 | -------------------------------------------------------------------------------- /Province/TH_Province_Out_Point.csv: -------------------------------------------------------------------------------- 1 | lon,lat 2 | 100.42808380227684,16.241449630294998 3 | 99.57206136157355,11.799835237503112 4 | 104.34522408806878,16.640498568990058 5 | 103.72767428713739,18.005178974480145 6 | 104.89563675496152,15.253792513661347 7 | 98.93929119342751,18.086828543578893 8 | 102.96693221706721,15.237799472694332 9 | 102.83892362459692,17.58157060758201 10 | 98.48220420219886,9.798228425094269 11 | 102.14704191709455,12.759263721351731 12 | 98.70469779978785,16.768806732768166 13 | 101.61569661553231,14.066571769323835 14 | 101.41489767140237,13.505100572221355 15 | 100.01012677286481,7.424416013659416 16 | 101.32388535591579,6.728314646404551 17 | 103.80185766329285,17.595500938298642 18 | 100.31921133695418,17.692655010109377 19 | 102.22842472921916,15.09206040937393 20 | 99.43708286562715,16.31498344144157 21 | 100.50407583642786,14.449805768270606 22 | 103.57815117088875,16.549959470684115 23 | 104.71885044076242,15.814412564471981 24 | 100.55515619790131,17.157749396993978 25 | 101.61125400138357,17.498355300644107 26 | 97.8971686357043,18.729120653809414 27 | 102.47525837947384,16.44644210344625 28 | 104.41429342274492,14.947845188466491 29 | 99.45414708193175,6.65329822511749 30 | 99.77455666905459,19.790395780633506 31 | 103.72081411608404,14.95052922977333 32 | 100.32944076278604,14.655708699177154 33 | 100.54092913786586,13.589607784524945 34 | 100.48312274421289,13.71480199876639 35 | 100.01414684574709,15.742380323145303 36 | 103.8450397651296,15.937985120737071 37 | 98.93180477161474,9.215048048444634 38 | 102.15515367979746,17.16463139451593 39 | 104.33262171082481,15.881282978052983 40 | 103.20573224949875,16.122867797623915 41 | 98.18056345031542,7.887972275038787 42 | 100.78751360757803,18.832316333465585 43 | 100.88121419203713,15.036857896597219 44 | 98.75678738279174,7.8829849678763875 45 | 100.06665798046537,18.167825891824414 46 | 99.12405911677885,7.474451611125362 47 | 99.82666107548866,14.72556636044237 48 | 102.42682550220188,12.11692250307343 49 | 99.55518658404065,13.54359298044985 50 | 101.15562745485585,6.179842507065543 51 | 100.29801434198319,13.935153756724246 52 | 99.62909156917596,8.445449281133191 53 | 100.30714716294004,14.824233711181165 54 | 99.90787112458916,13.340066141055601 55 | 104.24382511447698,17.453309617783177 56 | 100.51614319583486,6.783706252366655 57 | 100.29537367338074,19.1654400996581 58 | 101.77151998047911,6.069433967782199 59 | 101.22741841542286,14.288318499861754 60 | 102.01224985987601,16.259599307048465 61 | 99.6161695483112,15.297978294964953 62 | 99.61422900734307,13.044762268062925 63 | 98.04023315006157,8.77539111128174 64 | 101.27165083891995,16.536513360595364 65 | 102.257229244607,13.638981000799523 66 | 98.72521300620222,10.279863908930356 67 | 99.95663176119191,15.218245915747223 68 | 101.03732004399313,14.679023163667969 69 | 100.49649606485919,14.069999672561813 70 | 101.27892888866295,12.839490197554435 71 | 101.00207811588949,13.043392020416713 72 | 99.5178170736505,18.23608609158975 73 | 99.8809120063158,17.476027771896533 74 | 98.73836919988099,19.121958321950626 75 | 100.13084248343061,13.619918243401656 76 | 102.81043374440733,17.997697006159786 77 | 100.0582828573547,13.86182246876593 78 | 99.07065273520524,14.53546102459435 79 | -------------------------------------------------------------------------------- /Province/TH_Province_PolyCentroid_Point.csv: -------------------------------------------------------------------------------- 1 | lon,lat 2 | 100.40966831918004,16.26359588177258 3 | 99.57773920246984,11.800133379369822 4 | 104.43529545401094,16.590234644795117 5 | 103.72223735181564,18.05754821138531 6 | 104.95011862193493,15.203664061477141 7 | 98.96740065967808,18.076888106384125 8 | 102.96751434439784,15.100592088242443 9 | 102.84054109774246,17.512721050985967 10 | 98.56367898097528,9.922485714244827 11 | 102.12893575731513,12.785053142770721 12 | 98.65516599919252,16.646514764714958 13 | 101.61877754282752,14.04454077586481 14 | 101.41696414012873,13.541286751082092 15 | 100.0450883794851,7.459178766286254 16 | 101.34782167687784,6.739899162253607 17 | 103.82270312942205,17.513123515224336 18 | 100.43141819870638,17.726069865941177 19 | 102.16265004332013,15.028036062573573 20 | 99.48408707776233,16.350408446671295 21 | 100.51417072413332,14.420780174940067 22 | 103.62349253315057,16.595951603761243 23 | 104.7291515898099,15.862398264392803 24 | 100.5184547811338,17.09473597039019 25 | 101.55234300440014,17.492442864144827 26 | 97.94743248679151,18.727333292534503 27 | 102.47117486043459,16.403320012400968 28 | 104.40982653012257,14.95164117535546 29 | 99.57035599813872,6.731817040497598 30 | 99.84633066141204,19.7614170952387 31 | 103.65576694886894,14.927773687299805 32 | 100.34145622972946,14.638063947388133 33 | 100.62226242258754,13.594139590461069 34 | 100.55732297304122,13.71759757008235 35 | 99.98698452247345,15.682314563157856 36 | 103.82844819149074,15.938522018236714 37 | 99.09915938702673,9.1338132181165 38 | 102.24401009200233,17.194830826629733 39 | 104.37151118479193,15.849700142934854 40 | 103.18726982529844,16.07374698586453 41 | 98.27273792228328,7.86370621154316 42 | 100.81708444333701,18.828059482891533 43 | 100.89700240096535,15.117600379980313 44 | 98.88321462968163,7.909144804795171 45 | 100.01293743145203,18.213911985571453 46 | 99.35998594329727,7.48356217487681 47 | 99.80389539734826,14.648468014975688 48 | 102.50319501148272,12.138230243701447 49 | 99.5857449774331,13.549530930732391 50 | 101.1886579417261,6.164062790947469 51 | 100.35651770575959,13.949854409284796 52 | 99.7073199322324,8.51358626995086 53 | 100.32097766714898,14.87161582549246 54 | 99.93674023845946,13.359319891625168 55 | 104.31900403892148,17.429409546301436 56 | 100.54875918665752,6.948841436933641 57 | 100.22562436802312,19.21807804350682 58 | 101.7517276334595,6.126806227648525 59 | 101.21822471362796,14.262571956951106 60 | 101.95025698352515,16.145309210291042 61 | 99.58078098412251,15.332980440273158 62 | 99.60753927453007,12.998653780698776 63 | 98.10189674155853,8.69774345233541 64 | 101.24259645442251,16.392696585108702 65 | 102.33231143936476,13.677723428346518 66 | 98.90387286341414,10.298479576354456 67 | 99.99666396478574,15.188934111428287 68 | 101.02601666089981,14.668993856655177 69 | 100.56915303984732,14.083092358547031 70 | 101.34322213300793,12.84096596935709 71 | 101.12182744054911,13.046082846947733 72 | 99.51035219376158,18.274102943523147 73 | 99.79635036473955,17.36413922905163 74 | 98.77369762323546,18.90844144005603 75 | 100.17726327772687,13.596288814502003 76 | 102.77240707978964,17.972928025556264 77 | 100.06803359480108,13.887611205677418 78 | 99.05082693624655,14.614266001460805 79 | -------------------------------------------------------------------------------- /Visualize/freq_by_time_plot.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import csv 3 | import time 4 | import calendar 5 | import matplotlib.pyplot as plt 6 | from collections import OrderedDict 7 | from datetime import date, timedelta as td 8 | 9 | if __name__ == '__main__': 10 | 11 | if len(sys.argv) < 2: 12 | print 'Please insert processed twitdata.csv' 13 | exit() 14 | 15 | twitReader = csv.DictReader(open(sys.argv[1], 'rb'), delimiter = ',', fieldnames=['uid','lat','lon','province','province_abbr','province_abbr_index','epoch','date','time']) 16 | 17 | hourFreq = [0 for x in range(24)] 18 | hourFreqDays = [[0 for x in range(24)] for y in range(7)] 19 | dayFreq = [0 for x in range(7)] 20 | everyDayFreq = {} 21 | twitReader.next() 22 | for twit in twitReader: 23 | tTime = time.strptime(twit['time'],'%H:%M:%S') 24 | tDay = time.strptime(twit['date'], '%Y-%m-%d') 25 | tWeekDay = calendar.weekday(tDay.tm_year, tDay.tm_mon, tDay.tm_mday) 26 | 27 | hourFreq[tTime.tm_hour] += 1 28 | hourFreqDays[tWeekDay][tTime.tm_hour] += 1 29 | dayFreq[tWeekDay] += 1 30 | 31 | tDayTuple = str(tDay.tm_year)+'-'+str(tDay.tm_mon)+'-'+str(tDay.tm_mday) 32 | if tDayTuple not in everyDayFreq: 33 | everyDayFreq[tDayTuple] = 1 34 | else: 35 | everyDayFreq[tDayTuple] += 1 36 | 37 | everyDayFreq = OrderedDict(sorted(everyDayFreq.items())) 38 | dStart = time.strptime(everyDayFreq.keys()[0], '%Y-%m-%d') 39 | dStart = date(dStart.tm_year, dStart.tm_mon, dStart.tm_mday) 40 | dEnd = time.strptime(everyDayFreq.keys()[-1], '%Y-%m-%d') 41 | dEnd = date(dEnd.tm_year, dEnd.tm_mon, dEnd.tm_mday) 42 | delta = dEnd - dStart 43 | fullEveryDayFreq = OrderedDict() 44 | weekDayCount = OrderedDict() 45 | for i in range(7): 46 | weekDayCount[i] = [] 47 | for i in range(delta.days+1): 48 | tempDay = time.strptime(str(dStart + td(days=i)), '%Y-%m-%d') 49 | dayStr = str(tempDay.tm_year)+'-'+str(tempDay.tm_mon)+'-'+str(tempDay.tm_mday) 50 | fullEveryDayFreq[dayStr] = 0 51 | weekDay = calendar.weekday(tempDay.tm_year, tempDay.tm_mon, tempDay.tm_mday) 52 | if dayStr not in weekDayCount[weekDay]: 53 | weekDayCount[weekDay].append(dayStr) 54 | 55 | for day in everyDayFreq.items(): 56 | fullEveryDayFreq[day[0]] = day[1] 57 | 58 | for i in range(7): 59 | try: 60 | dayFreq[i] /= len(weekDayCount[i]) 61 | except: 62 | pass 63 | 64 | # Plot tweet freq by day hour 65 | weekDayNames = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'] 66 | # Seperate by day 67 | for f1 in range(len(hourFreqDays)): 68 | for f2 in range(len(hourFreqDays[f1])): 69 | try: 70 | hourFreqDays[f1][f2] /= len(weekDayCount[f1]) 71 | except: 72 | pass 73 | plt.plot(hourFreqDays[f1], label = weekDayNames[f1]) 74 | plt.legend(loc='best') 75 | plt.xticks(range(24)) 76 | plt.xlabel('Hour during the day') 77 | plt.ylabel('Mean number of tweet') 78 | plt.title('Tweet frequency during the day') 79 | plt.show() 80 | 81 | # Plot tweet freq by day in week 82 | plt.plot(dayFreq, 'b-', dayFreq, 'ro') 83 | plt.xticks(range(len(weekDayNames)), weekDayNames) 84 | plt.xlabel('Day') 85 | plt.ylabel('Mean number of tweet') 86 | plt.title('Tweet frequency by day in week') 87 | plt.show() 88 | 89 | # Plot tweet freq in every day of collected data 90 | plt.plot(fullEveryDayFreq.values(), 'b-', fullEveryDayFreq.values(), 'ro') 91 | plt.xticks(range(len(fullEveryDayFreq.values())), fullEveryDayFreq.keys(), rotation = 'vertical') 92 | plt.xlabel('Date') 93 | plt.ylabel('Number of tweet') 94 | plt.title('Tweet frequency of overall collected data') 95 | plt.show() 96 | -------------------------------------------------------------------------------- /Visualize/province_connection_plot.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.insert(0, '../Province/') 3 | import csv 4 | from province_point import * 5 | from collections import OrderedDict 6 | from operator import itemgetter 7 | import operator 8 | 9 | def readConnectionTable(csvFile): 10 | 'Return 2D dict of province connection table' 11 | isColMajor = raw_input('Data is column major? (y/n): ') 12 | isColMajor = True if isColMajor == 'y' else False 13 | tableReader = csv.reader(open(csvFile, 'rb'), delimiter = ',') 14 | pvList = OrderedDict() 15 | header = True 16 | for row in tableReader: 17 | if header: 18 | header = False 19 | del row[0] 20 | for pv in row: 21 | pvList[pv] = OrderedDict() 22 | else: 23 | pvName = row[0] 24 | del row[0] 25 | for i in range(len(row)): 26 | if isColMajor: 27 | pvList[pvList.keys()[i]][pvName] = float(row[i]) 28 | else: 29 | pvList[pvName][pvList.keys()[i]] = float(row[i]) 30 | 31 | return pvList 32 | 33 | def writeConnectionLink(pvConnTable, pvcmDict, csvFile, isTwoWay): 34 | connLineWriter = csv.DictWriter(open(csvFile, 'wb'), delimiter = ';', fieldnames=['from','to','polyline','weight']) 35 | connLineWriter.writeheader() 36 | for pvDict in pvConnTable.items(): 37 | for link in pvDict[1].items(): 38 | connLineWriter.writerow({ 39 | 'from' : pvDict[0] 40 | , 'to' : link[0] 41 | , 'weight' : link[1] 42 | , 'polyline' : genPolyLine(pvcmDict[pvDict[0]].outP, pvcmDict[link[0]].inP) if isTwoWay else genPolyLine(pvcmDict[pvDict[0]].polyCentroid, pvcmDict[link[0]].polyCentroid) 43 | }) 44 | 45 | def writeConnectionLinkMagnitude(pvConnTable, pvcmDict, csvFile, sign): 46 | if sign == '+': 47 | opt = operator.add 48 | elif sign =='-': 49 | opt = operator.sub 50 | 51 | pvList = OrderedDict() 52 | i = 0 53 | for pv in pvConnTable.keys(): 54 | pvList[i] = pv 55 | i += 1 56 | 57 | connLineWriter = csv.DictWriter(open(csvFile, 'wb'), delimiter = ';', fieldnames=['from','to','polyline','weight']) 58 | connLineWriter.writeheader() 59 | for x in range(len(pvConnTable)): 60 | for y in range(x, len(pvConnTable)): 61 | # magnitude = pvConnTable[pvList[x]][pvList[y]] - pvConnTable[pvList[y]][pvList[x]] 62 | magnitude = opt(pvConnTable[pvList[x]][pvList[y]], pvConnTable[pvList[y]][pvList[x]]) 63 | 64 | if magnitude > 0: 65 | fromPv = pvList[x] 66 | toPv = pvList[y] 67 | else: 68 | fromPv = pvList[y] 69 | toPv = pvList[x] 70 | 71 | connLineWriter.writerow({ 72 | 'from' : fromPv 73 | , 'to' : toPv 74 | , 'weight' : abs(magnitude) 75 | , 'polyline' : genPolyLine(pvcmDict[fromPv].polyCentroid, pvcmDict[toPv].polyCentroid) 76 | }) 77 | 78 | def genPolyLine(p1, p2): 79 | return 'LINESTRING(' + str(p1.x) + ' ' + str(p1.y) + ', ' + str(p2.x) + ' ' + str(p2.y) +')' 80 | 81 | if __name__ == '__main__': 82 | if len(sys.argv) < 4: 83 | print 'Please insert shapefile, connection table and output filename.' 84 | exit() 85 | 86 | isTwoWay = raw_input('Is two way connection? (y/n): ').lower() 87 | isTwoWay = True if isTwoWay == 'y' else False 88 | isMagnitude = False 89 | if isTwoWay: 90 | isMagnitude = raw_input('Is magnitude? (y/n): ').lower() 91 | isMagnitude = True if isMagnitude == 'y' else False 92 | if isMagnitude: 93 | sign = raw_input('Magnitude operator (+/-): ') 94 | 95 | pvcmHolder = ProvinceCMPointHolder(shapefile.Reader(sys.argv[1]), abbrCsv = '../Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv') 96 | pvConnTable = readConnectionTable(sys.argv[2]) 97 | 98 | if isMagnitude == False: 99 | writeConnectionLink(pvConnTable, pvcmHolder.pvcmDict, sys.argv[3], isTwoWay) 100 | else: 101 | writeConnectionLinkMagnitude(pvConnTable, pvcmHolder.pvcmDict, sys.argv[3], sign) 102 | -------------------------------------------------------------------------------- /Province/provinces.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import time as t 3 | 4 | def ReadProvinceCSV(provinceCsvFile): 5 | provinces = [] 6 | # Input csv: (Name, Abbr, Index) 7 | isFirstLine = True # Skip header 8 | with open(provinceCsvFile, 'rb') as proviCsv: 9 | proviReader = csv.reader(proviCsv, delimiter=',') 10 | for row in proviReader: 11 | if(isFirstLine): 12 | isFirstLine = False 13 | continue 14 | provinces.append((str(row[0]), str(row[1]), int(row[2]))) 15 | return provinces 16 | 17 | class ProvinceSyncer: 18 | def __init__(self, provinceCsvFile): 19 | self.provinces = ReadProvinceCSV(provinceCsvFile) 20 | self.lowerLettProvine = [] 21 | for pv in self.provinces: 22 | self.lowerLettProvine.append(pv[0].lower().replace(' ', '')) 23 | 24 | def SyncProvinceName(self, province): 25 | # Cut off 'Chang Wat' 26 | if('Chang Wat' in province): 27 | province = province[len('Chang Wat '): len(province)] 28 | 29 | # Cut off bracket word 30 | bracketPos = province.find('(') 31 | if(bracketPos != -1): 32 | province = province[0: bracketPos-1] 33 | 34 | # Cut off 'Province' 35 | 36 | filterPv = province.lower().replace(' ', '') 37 | 38 | for i in range(len(self.lowerLettProvine)): 39 | if filterPv == self.lowerLettProvine[i]: 40 | return self.provinces[i][0] 41 | 42 | if filterPv == 'amnajcharoen': 43 | return 'Amnat Charoen' 44 | elif filterPv == 'auttaradit': 45 | return 'Uttaradit' 46 | elif filterPv == 'burirum': 47 | return 'Buriram' 48 | elif filterPv == 'kampaengphet': 49 | return 'Kamphaeng Phet' 50 | elif filterPv == 'loei': 51 | return 'Loei Province' 52 | elif filterPv == 'lopburi': 53 | return 'Lopburi Province' 54 | elif filterPv == 'nakhonprathom': 55 | return 'Nakhon Pathom' 56 | elif filterPv == 'phranakhonsiayudhya': 57 | return 'Phra Nakhon Si Ayutthaya' 58 | elif filterPv == 'prachuapkhilikhan': 59 | return 'Prachuap Khiri Khan' 60 | elif filterPv == 'samutprakarn': 61 | return 'Samut Prakan' 62 | elif filterPv == 'samutsongkham': 63 | return 'Samut Songkhram' 64 | elif filterPv == 'srakaeo': 65 | return 'Sa Kaeo' 66 | 67 | if(province == 'Krung Thep Maha Nakhon' or province == 'Bangkok Metropolis'): 68 | province = 'Bangkok' 69 | 70 | return province 71 | 72 | def EpochToDataTime(epoch): 73 | date = t.strftime('%Y-%m-%d', t.localtime(epoch)) 74 | time = t.strftime('%H:%M:%S', t.localtime(epoch)) 75 | return {'date': date, 'time': time} 76 | 77 | class Province: 78 | def __init__(self, name, abbr, abbr_id): 79 | self.name = name 80 | self.abbr = abbr 81 | self.abbr_id = abbr_id 82 | self.uidList = [] 83 | # Non unique 84 | self.idCount = {} 85 | self.totalID = 0 86 | 87 | def addID(self, uid): 88 | # self.idList.append(uid) 89 | if uid not in self.uidList: 90 | self.uidList.append(uid) 91 | self.idCount[uid] = 1 92 | else: 93 | self.idCount[uid] += 1 94 | self.totalID += 1 95 | 96 | def findCommonUID(self, targetProvi): 97 | return list(set(self.uidList).intersection(targetProvi.uidList)) 98 | 99 | def findCommonID(self, targetProvi): 100 | commonUID = self.findCommonUID(targetProvi) 101 | count = 0 102 | for id in commonUID: 103 | count += self.idCount[id] 104 | return count 105 | 106 | class ProvinceHolder: 107 | def __init__(self, province_abbr = './Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv', csvFile = None): 108 | self.provinces = [] 109 | self.__createListOfProvinces(province_abbr) 110 | if csvFile != None: 111 | self.readDataFromCsv(csvFile) 112 | 113 | def __createListOfProvinces(self, province_abbr): 114 | # Create list of provinces 115 | provinces_csv = ReadProvinceCSV(province_abbr) 116 | self.provinces = [] 117 | for provi in provinces_csv: 118 | self.provinces.append(Province( 119 | name = provi[0] 120 | , abbr = provi[1] 121 | , abbr_id = provi[2] -1 122 | )) 123 | 124 | def readDataFromCsv(self, csvFile): 125 | # uid,lat,lon,province,province_abbr,province_abbr_index,epoch,date,time 126 | twitCsvReader = csv.DictReader(open(csvFile)) 127 | for row in twitCsvReader: 128 | self.provinces[int(row['province_abbr_index']) - 1].addID(int(row['uid'])) 129 | -------------------------------------------------------------------------------- /user_tracker.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import csv 3 | from collections import OrderedDict 4 | from geopy.distance import vincenty 5 | sys.path.insert(0, './Province') 6 | from quad_tree import Point 7 | 8 | class TravelData: 9 | def __init__(self, speed=0, time=0, distance=0, travelFrom = None, travelTo = None): 10 | self.speed = speed 11 | self.time = time 12 | self.distance = distance 13 | self.travelFrom = travelFrom 14 | self.travelTo = travelTo 15 | 16 | def __str__(self): 17 | return 'Speed: {}, Distance: {}, Time: {} | from {} to {}'.format(self.speed, self.distance, self.time 18 | , None if self.travelFrom == None else str(self.travelFrom.time) +' '+ self.travelFrom.name 19 | , None if self.travelTo == None else str(self.travelTo.time)+' '+ self.travelTo.name) 20 | 21 | class HistoryData: 22 | def __init__(self, name, time, point): 23 | self.name = name 24 | self.time = time 25 | self.point = point 26 | def __str__(self): 27 | return '{}\t{}\t{}'.format(self.time, self.name, self.point) 28 | 29 | class User: 30 | def __init__(self, uid): 31 | self.uid = uid 32 | self.history = {} 33 | 34 | def addHistory(self, history): 35 | self.history[history.time] = history 36 | 37 | def sortHistory(self): 38 | self.history = OrderedDict(sorted(self.history.items())) 39 | 40 | def createMergeHist(self): 41 | 'Reduce hist of same province in time by choose the first apperance. Only use in getting history names purpose. Should be call after sorted' 42 | if(len(self.history) == 0): 43 | return 44 | self.mergeHist = {} 45 | previousName = None 46 | for hist in self.history.values(): 47 | if previousName != hist.name: 48 | self.mergeHist[hist.time] = hist 49 | previousName = hist.name 50 | self.mergeHist = OrderedDict(sorted(self.mergeHist.items())) 51 | 52 | def createCrossTravelData(self, pvcmDict): 53 | self.crossTravelData = OrderedDict() 54 | isStartHist = True 55 | preHist = None 56 | for hist in self.history.values(): 57 | if isStartHist: 58 | isStartHist = False 59 | preHist = hist 60 | continue 61 | 62 | if hist.name != preHist.name: 63 | travelData = TravelData() 64 | startP = pvcmDict[preHist.name].polyCentroid 65 | endP = pvcmDict[hist.name].polyCentroid 66 | travelData.distance = vincenty(startP.getTuple()[::-1], endP.getTuple()[::-1]) 67 | travelData.time = (hist.time - preHist.time)/3600.0 68 | travelData.speed = travelData.distance / travelData.time 69 | travelData.travelFrom = preHist 70 | travelData.travelTo = hist 71 | self.crossTravelData[preHist.time] = travelData 72 | 73 | preHist = hist 74 | 75 | def getUniqueProvinceHist(self): 76 | provinceNames = [] 77 | for hist in self.history.values(): 78 | if (hist.name not in provinceNames): 79 | provinceNames.append(hist.name) 80 | return provinceNames 81 | 82 | class UserTracker: 83 | def __init__(self, twitDataCsv, focusList = None): 84 | self.twitCsvReader = csv.DictReader(open(twitDataCsv)) 85 | self.uidList = {} 86 | 87 | 'uid,lat,lon,province,province_abbr,province_abbr_index,epoch,date,time' 88 | for row in self.twitCsvReader: 89 | id = int(row['uid']) 90 | if focusList != None: 91 | if id not in focusList: 92 | continue 93 | if(id not in self.uidList): 94 | self.uidList[id] = User(id) 95 | 96 | self.uidList[id].addHistory( 97 | HistoryData( 98 | name = row['province'] 99 | , time = int(row['epoch']) 100 | , point = Point(float(row['lon']), float(row['lat'])) 101 | ) 102 | ) 103 | 104 | for user in self.uidList.values(): 105 | user.sortHistory() 106 | user.createMergeHist() 107 | 108 | def createUserCrossTravelData(self, pvcmDict): 109 | 'Calculate and set each user max speed' 110 | for user in self.uidList.values(): 111 | user.createCrossTravelData(pvcmDict) 112 | 113 | if __name__ == '__main__': 114 | 115 | if(len(sys.argv) < 2): 116 | print 'Please insert: processed twitdata .csv' 117 | exit() 118 | 119 | userTracker = UserTracker(twitDataCsv= sys.argv[1]) 120 | 121 | for user in userTracker.uidList.values(): 122 | print user.uid, len(user.history) 123 | print 'Total user:', len(userTracker.uidList) 124 | -------------------------------------------------------------------------------- /user_travel_filter.py: -------------------------------------------------------------------------------- 1 | from user_tracker import * 2 | sys.path.insert(0, './Province') 3 | from province_point import * 4 | from geopy.distance import vincenty 5 | import operator 6 | 7 | def filterPlaneUser(userList, pvcmDict): 8 | 'Reture dict list of user while also injected filteredTime list field' 9 | filtUser = {} 10 | for user in userList: 11 | if len(user.crossTravelData) == 0: 12 | continue 13 | for crossTravelData in user.crossTravelData.values(): 14 | if crossTravelData.distance >= 300 or crossTravelData.speed >= 300: 15 | if user.uid not in filtUser.keys(): 16 | user.filteredTime = [crossTravelData.travelFrom.time] 17 | filtUser[user.uid] = user 18 | else: 19 | user.filteredTime.append(crossTravelData.travelFrom.time) 20 | 21 | return filtUser 22 | 23 | def writeUserFilterdPoint(filtUsers, outputFileName, pvcmDict): 24 | lineWriter = csv.DictWriter(open(outputFileName, 'wb'), delimiter = ';', fieldnames=['uid', 'from', 'to', 'distance', 'time in hour', 'speed', 'polyline']) 25 | lineWriter.writeheader() 26 | 27 | for user in filtUsers.values(): 28 | preHist = None 29 | startHist = True 30 | markTravelTime = 0 31 | arrivedTime = user.crossTravelData[user.filteredTime[markTravelTime]].travelTo.time 32 | for hist in user.history.values(): 33 | if startHist: 34 | startHist = False 35 | preHist = hist 36 | continue 37 | 38 | if hist.time == arrivedTime: 39 | ctData = user.crossTravelData[user.filteredTime[markTravelTime]] 40 | lineWriter.writerow({ 41 | 'uid' : user.uid 42 | , 'from' : preHist.name 43 | , 'to' : hist.name 44 | , 'distance' : ctData.distance 45 | , 'time in hour' : ctData.time 46 | , 'speed' : ctData.speed 47 | , 'polyline' : genPolyLine(preHist.point, hist.point) 48 | }) 49 | markTravelTime += 1 50 | if markTravelTime >= len(user.filteredTime): 51 | break 52 | else: 53 | arrivedTime = user.crossTravelData[user.filteredTime[markTravelTime]].travelTo.time 54 | 55 | preHist = hist 56 | 57 | def writeUserTravelPoint(filtUsers, outputFileName, pvcmDict): 58 | lineWriter = csv.DictWriter(open(outputFileName, 'wb'), delimiter = ';', fieldnames=['uid', 'from', 'to', 'distance', 'time in hour', 'speed', 'polyline']) 59 | lineWriter.writeheader() 60 | 61 | for user in filtUsers.values(): 62 | writing = False 63 | writeTail = False 64 | markTravelTime = 0 65 | preHist = None 66 | arrivedTime = user.crossTravelData[user.filteredTime[markTravelTime]].travelTo.time 67 | for hist in user.history.values(): 68 | if hist.time < arrivedTime: 69 | if writing and hist.time <= user.filteredTime[markTravelTime]: 70 | calDataAndWrite(user, preHist, hist, pvcmDict, lineWriter) 71 | 72 | elif hist.time == arrivedTime: 73 | writing = True 74 | markTravelTime += 1 75 | if markTravelTime < len(user.filteredTime): 76 | arrivedTime = user.crossTravelData[user.filteredTime[markTravelTime]].travelTo.time 77 | 78 | else: 79 | calDataAndWrite(user, preHist, hist, pvcmDict, lineWriter) 80 | preHist = hist 81 | 82 | def calDataAndWrite(user, preHist, hist, pvcmDict, lineWriter): 83 | startP = pvcmDict[preHist.name].polyCentroid 84 | endP = pvcmDict[hist.name].polyCentroid 85 | distance = vincenty(startP.getTuple()[::-1], endP.getTuple()[::-1]) 86 | time = (hist.time - preHist.time)/3600.0 87 | speed = distance / time 88 | lineWriter.writerow({ 89 | 'uid' : user.uid 90 | , 'from' : preHist.name 91 | , 'to' : hist.name 92 | , 'distance' : distance 93 | , 'time in hour' : time 94 | , 'speed' : speed 95 | , 'polyline': genPolyLine(preHist.point, hist.point) 96 | }) 97 | 98 | def genPolyLine(p1, p2): 99 | return 'LINESTRING(' + str(p1.x) + ' ' + str(p1.y) + ', ' + str(p2.x) + ' ' + str(p2.y) +')' 100 | 101 | if __name__ == '__main__': 102 | if len(sys.argv) < 5: 103 | print 'Please insert\nInput: Shapefile, twit data processed.csv\nOutput: AfterTravelHistory.csv, TravelHistory.csv' 104 | exit() 105 | 106 | pvPHolder = ProvinceCMPointHolder(shapefile.Reader(sys.argv[1]), abbrCsv = './Province/Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv') 107 | 108 | userTracker = UserTracker(sys.argv[2]) 109 | print 'Total users: {}'.format(len(userTracker.uidList)) 110 | userTracker.createUserCrossTravelData(pvPHolder.pvcmDict) 111 | planeUser = filterPlaneUser(userTracker.uidList.values(), pvPHolder.pvcmDict) 112 | writeUserTravelPoint(planeUser, sys.argv[3], pvPHolder.pvcmDict) 113 | writeUserFilterdPoint(planeUser, sys.argv[4], pvPHolder.pvcmDict) 114 | print 'Plane users: {}'.format(len(planeUser)) 115 | -------------------------------------------------------------------------------- /Province/grid_refinement.py: -------------------------------------------------------------------------------- 1 | from province_qtree_shapefile import * 2 | import matplotlib.transforms as mtransforms 3 | import quad_tree 4 | 5 | def Init(treeCsvFileIn, treeCsvFileOut, copy = True): 6 | treeCsvReader = csv.reader(open(treeCsvFileIn, 'rb'), delimiter = ' ') 7 | # Copy from origin file 8 | treeCsvWriter = csv.writer(open(treeCsvFileOut, 'wb'), delimiter = ' ') 9 | maxID = 0 10 | leafCount = 0 11 | for row in treeCsvReader: 12 | if copy: 13 | treeCsvWriter.writerow(row) 14 | if row[0] == 'node': 15 | if maxID < int(row[1]): 16 | maxID = int(row[1]) 17 | if row[8] == 'True': 18 | leafCount += 1 19 | 20 | return (maxID, leafCount) 21 | 22 | def scanGridByCell(pvGrid, pvTree, pvShapes): 23 | # Get QTree BBox 24 | qTreeBBox = mtransforms.Bbox([ 25 | pvTree.rect.btmLeft.getList() 26 | , pvTree.rect.topRight.getList() 27 | ]) 28 | 29 | pvShapeList = [] 30 | for pvShape in pvShapes.values(): 31 | if pvShape.isIntersectBBox(qTreeBBox): 32 | pvShapeList.append(pvShape) 33 | 34 | if len(pvShapeList) == 0: 35 | return 36 | 37 | # Testing 38 | startUID = quad_tree.uid 39 | pvTree.Span() 40 | nLatBox = int(ceil((pvTree.rect.topRight.y - pvTree.rect.btmLeft.y) / pvGrid.latBoxSize)) 41 | nLonBox = int(ceil((pvTree.rect.topRight.x - pvTree.rect.btmLeft.x) / pvGrid.lonBoxSize)) 42 | 43 | for iLat in range(nLatBox): 44 | for iLon in range(nLonBox): 45 | lat = pvTree.rect.btmLeft.y + (iLat + 0.5) * pvGrid.latBoxSize 46 | lon = pvTree.rect.btmLeft.x + (iLon + 0.5) * pvGrid.lonBoxSize 47 | testPoints = genSamplingPoints(Point(lon, lat), Point(pvGrid.lonBoxSize/4, pvGrid.latBoxSize/4)) 48 | 49 | for pvShape in pvShapeList: 50 | count = 0 51 | for point in testPoints: 52 | if pvShape.isContainPoint(point.getTuple()): 53 | count += 1 54 | 55 | if count != 0: 56 | pvTree.AddDictValue( 57 | point= Point(lon, lat) 58 | , value ={count / float(len(testPoints)) 59 | : pvShape.name}) 60 | 61 | pvTree.OptimizeTree(reset = False) 62 | if len(pvTree.childs) == 0: 63 | quad_tree.uid = startUID 64 | else: 65 | pvTree.injectUID(newUID = startUID) 66 | 67 | def StartRefine(pvShapeFile, inQTreeStruct, outQTreeStruct, desireGridSizekm, workSection = 1, totalSection = 1): 68 | 69 | sf = shapefile.Reader(pvShapeFile) 70 | pvGrid = buildGridAndTree(sf, boxKm = desireGridSizekm)[0] # Desire grid size 71 | quad_tree.uid, leafCount = Init(inQTreeStruct, outQTreeStruct, copy = (totalSection == 1)) 72 | pvShapes = buildProvinceShape(sf, './Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv') 73 | 74 | treeCsvReader = csv.reader(open(inQTreeStruct, 'rb'), delimiter = ' ') 75 | lCount = 0 76 | print '{}/{}'.format(lCount, leafCount) 77 | start = int(ceil((workSection-1)/float(totalSection)*leafCount)) 78 | stop = int(ceil(workSection/float(totalSection)*leafCount))-1 79 | print 'start: {}, stop: {}'.format(start, stop) 80 | 81 | oriTreeImp = QuadTreeImporter(csvFile= inQTreeStruct, isDict = True) 82 | oriQTree = oriTreeImp.rootNode 83 | 84 | for row in treeCsvReader: 85 | if row[0] == 'node' and row[8] == 'True': 86 | if lCount < start: 87 | lCount += 1 88 | continue 89 | 90 | print '{}/{}'.format(lCount, leafCount) 91 | value = strDictReader(row[6]) 92 | qtree = QuadTree( 93 | level = int(row[7]) 94 | , rect = Rectangle( 95 | btmLeft = Point(float(row[2]), float(row[3])) 96 | , topRight = Point(float(row[4]), float(row[5])) 97 | ) 98 | , value = value 99 | , maxLevel = pvGrid.maxLevel 100 | , uid_in = int(row[1]) 101 | ) 102 | scanGridByCell(pvGrid, qtree, pvShapes) 103 | 104 | oriNode = oriQTree.findNodeByPoint(qtree.rect.getMidPoint()).parent 105 | for i in range(len(oriNode.childs)): 106 | if oriNode.childs[i].uid == qtree.uid: 107 | oriNode.childs[i] = qtree 108 | 109 | qtree.exportTreeStructStart(csvFileName = outQTreeStruct, mode = 'a', skipRoot = True) 110 | lCount += 1 111 | 112 | print 'Error whole tree:', oriQTree.ErrorCheck() 113 | 114 | if __name__ == '__main__': 115 | if len(sys.argv) < 4: 116 | print 'Please insert province shapefile, quadtree struct.csv and output filename.csv' 117 | exit() 118 | 119 | isMultiprocessing = raw_input('Use multiprocessing? (y/n): ').lower() 120 | desireGridSizekm = input('Desire grid size(km): ') 121 | 122 | if isMultiprocessing == 'n': 123 | StartRefine( 124 | pvShapeFile= sys.argv[1] 125 | , inQTreeStruct= sys.argv[2] 126 | , outQTreeStruct= sys.argv[3] 127 | , desireGridSizekm= desireGridSizekm 128 | , workSection= 1 129 | , totalSection= 1 130 | ) 131 | 132 | elif isMultiprocessing == 'y': 133 | print 'Incoming multipro?' 134 | -------------------------------------------------------------------------------- /province_connection_table.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.insert(0, './Province') 3 | import csv 4 | import twit_extract_feature 5 | import pandas 6 | from provinces import * 7 | from user_tracker import * 8 | from math import floor 9 | 10 | class ProvinceTable: 11 | def __init__(self, provinces): 12 | self.provinces = provinces 13 | self.table = [[0 for x in range(len(provinces))] for y in range(len(provinces))] 14 | self.table_norm = [[0 for x in range(len(provinces))] for y in range(len(provinces))] 15 | 16 | self.provinceNameList = [] 17 | for province in self.provinces: 18 | self.provinceNameList.append(province.name) 19 | 20 | def setTimeWindow(self, hours, days): 21 | 'Set travel time window in seconds' 22 | self.timeWindow = days * (24*60*60) + hours * (60*60) 23 | 24 | def createTableOfCommonUID(self, divider = None): 25 | for f1 in range(len(self.provinces)): 26 | for f2 in range(f1 + 1, len(self.provinces)): 27 | totalIntersect = len(self.provinces[f1].findCommonUID(targetProvi= self.provinces[f2])) 28 | if divider == None: 29 | self.table[f1][f2] = totalIntersect 30 | self.table[f2][f1] = totalIntersect 31 | else: 32 | roundVal = int(floor(totalIntersect/divider)) 33 | self.table[f1][f2] = roundVal 34 | self.table[f2][f1] = roundVal 35 | try: 36 | norm = float(totalIntersect) / ( len(self.provinces[f1].uidList) + len(self.provinces[f2].uidList) - totalIntersect) 37 | self.table_norm[f1][f2] = norm 38 | self.table_norm[f2][f1] = norm 39 | except: 40 | self.table_norm[f1][f2] = 0 41 | self.table_norm[f2][f1] = 0 42 | 43 | self.__tableToDataFrame() 44 | 45 | def normConnBySelfOverallConn(self): 46 | for y in range(len(self.table)): 47 | totalCommon = 0.0 48 | for x in range(len(self.table)): 49 | totalCommon += self.table[y][x] 50 | 51 | if totalCommon == 0: 52 | continue 53 | 54 | for x in range(len(self.table)): 55 | self.table[y][x] /= totalCommon 56 | 57 | self.__tableToDataFrame() 58 | 59 | def createTableOfTwosideConnection(self, userTracker): 60 | for user in userTracker.uidList.values(): 61 | startHist = True 62 | preHist = None 63 | 64 | for hist in user.mergeHist.items(): 65 | if startHist: 66 | startHist = False 67 | preHist = hist 68 | continue 69 | 70 | if (hist[0] - preHist[0]) <= self.timeWindow: 71 | self.table[self.provinceNameList.index(preHist[1].name)][self.provinceNameList.index(hist[1].name)] += 1 72 | 73 | preHist = hist 74 | 75 | self.__tableToDataFrame() 76 | 77 | def __tableToDataFrame(self): 78 | self.dataFrame = pandas.DataFrame(data = self.table, index= self.provinceNameList, columns= self.provinceNameList) 79 | 80 | self.dataFrame_norm = pandas.DataFrame(data = self.table_norm, index= self.provinceNameList, columns= self.provinceNameList) 81 | 82 | def exportToCSV(self, filename, majorCol = False): 83 | if majorCol: 84 | self.dataFrame = self.dataFrame.transpose() 85 | self.dataFrame.to_csv(filename) 86 | 87 | def exportToCSV_NormalizePopulation(self, filename, majorCol = False): 88 | if majorCol: 89 | self.dataFrame_norm = self.dataFrame_norm.transpose() 90 | self.dataFrame_norm.to_csv(filename) 91 | 92 | def createConnectionTable(dataCsv, outputCsv, mode): 93 | provinceHolder = ProvinceHolder() 94 | provinceTable = ProvinceTable(provinceHolder.provinces) 95 | isMajorCol = raw_input('Is column major? (y/n): ') 96 | isMajorCol = True if isMajorCol=='y' else False 97 | if mode == 1: 98 | in_divider = raw_input('Input divider (left blank if not divide): ') 99 | provinceHolder.readDataFromCsv(csvFile = dataCsv) 100 | provinceTable.createTableOfCommonUID(divider = None if len(in_divider) == 0 else float(in_divider)) 101 | provinceTable.exportToCSV_NormalizePopulation(outputCsv[0:len(outputCsv)-4] +'_Norm_Population'+outputCsv[len(outputCsv)-4::1], isMajorCol) 102 | elif mode == 2: 103 | provinceHolder.readDataFromCsv(csvFile = dataCsv) 104 | provinceTable.createTableOfCommonUID() 105 | provinceTable.normConnBySelfOverallConn() 106 | elif mode == 3: 107 | print 'Insert travel time window in days and hours.' 108 | days = input('Days: ') 109 | hours = input('Hours: ') 110 | provinceTable.setTimeWindow(days=days, hours=hours) 111 | userTracker = UserTracker(twitDataCsv= dataCsv) 112 | provinceTable.createTableOfTwosideConnection(userTracker) 113 | else: 114 | print 'Insert wrong mode.' 115 | exit() 116 | 117 | provinceTable.exportToCSV(outputCsv, isMajorCol) 118 | 119 | if __name__ == '__main__': 120 | if(len(sys.argv) < 3): 121 | print 'Please insert processed twitdata .csv and output file name.' 122 | exit() 123 | 124 | mode = input('1. Table of common UID\n2. Table of common UID divided by total common UID of that province\n3. Table of two-way connection\nMode: ') 125 | createConnectionTable(dataCsv = sys.argv[1], outputCsv = sys.argv[2], mode = mode) 126 | -------------------------------------------------------------------------------- /Visualize/Images/.gitattributes: -------------------------------------------------------------------------------- 1 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]0.5[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 2 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]0.5.png filter=lfs diff=lfs merge=lfs -text 3 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]1.0[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 4 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]1.0.png filter=lfs diff=lfs merge=lfs -text 5 | Connection[[:space:]]score[[:space:]]Natural[[:space:]]Breaks[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 6 | Connection[[:space:]]score[[:space:]]Natural[[:space:]]Breaks.png filter=lfs diff=lfs merge=lfs -text 7 | Connection[[:space:]]score[[:space:]]Standard[[:space:]]Deviation[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 8 | Connection[[:space:]]score[[:space:]]Standard[[:space:]]Deviation.png filter=lfs diff=lfs merge=lfs -text 9 | Living[[:space:]]provinces[[:space:]]per[[:space:]]user.png filter=lfs diff=lfs merge=lfs -text 10 | Thailand[[:space:]]Provinces[[:space:]]Quadtree.png filter=lfs diff=lfs merge=lfs -text 11 | Thailand[[:space:]]Provinces[[:space:]]Quadtree[[:space:]]Zoom[[:space:]]Landscape.png filter=lfs diff=lfs merge=lfs -text 12 | Thailand[[:space:]]Provinces[[:space:]]Quadtree[[:space:]]Zoom.png filter=lfs diff=lfs merge=lfs -text 13 | Travel[[:space:]]frequency[[:space:]]between[[:space:]]province.png filter=lfs diff=lfs merge=lfs -text 14 | Tweet[[:space:]]frequency[[:space:]]by[[:space:]]day[[:space:]]in[[:space:]]week.png filter=lfs diff=lfs merge=lfs -text 15 | Tweet[[:space:]]frequency[[:space:]]during[[:space:]]the[[:space:]]day.png filter=lfs diff=lfs merge=lfs -text 16 | Tweet[[:space:]]frequency[[:space:]]of[[:space:]]overall[[:space:]]collected[[:space:]]data.png filter=lfs diff=lfs merge=lfs -text 17 | Tweet[[:space:]]frequency.png filter=lfs diff=lfs merge=lfs -text 18 | User[[:space:]]per[[:space:]]province.png filter=lfs diff=lfs merge=lfs -text 19 | After[[:space:]]Plane[[:space:]]History[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 20 | After[[:space:]]Plane[[:space:]]History.png filter=lfs diff=lfs merge=lfs -text 21 | Common[[:space:]]UID[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 22 | Common[[:space:]]UID[[:space:]]Norm[[:space:]]Population[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 23 | Common[[:space:]]UID[[:space:]]Norm[[:space:]]Population.png filter=lfs diff=lfs merge=lfs -text 24 | Common[[:space:]]UID[[:space:]]Norm[[:space:]]Total[[:space:]]Common[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 25 | Common[[:space:]]UID[[:space:]]Norm[[:space:]]Total[[:space:]]Common.png filter=lfs diff=lfs merge=lfs -text 26 | Common[[:space:]]UID.png filter=lfs diff=lfs merge=lfs -text 27 | Common[[:space:]]UID[[:space:]]Round[[:space:]]1000[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 28 | Common[[:space:]]UID[[:space:]]Round[[:space:]]1000.png filter=lfs diff=lfs merge=lfs -text 29 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]0.5[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 30 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]0.5.png filter=lfs diff=lfs merge=lfs -text 31 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]1.0[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 32 | Connection[[:space:]]score[[:space:]]Equal[[:space:]]Interval[[:space:]]1.0.png filter=lfs diff=lfs merge=lfs -text 33 | Connection[[:space:]]score[[:space:]]Natural[[:space:]]Breaks[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 34 | Connection[[:space:]]score[[:space:]]Natural[[:space:]]Breaks.png filter=lfs diff=lfs merge=lfs -text 35 | Connection[[:space:]]score[[:space:]]Standard[[:space:]]Deviation[[:space:]]Histogram.png filter=lfs diff=lfs merge=lfs -text 36 | Connection[[:space:]]score[[:space:]]Standard[[:space:]]Deviation.png filter=lfs diff=lfs merge=lfs -text 37 | Living[[:space:]]provinces[[:space:]]per[[:space:]]user.png filter=lfs diff=lfs merge=lfs -text 38 | Magnitude[[:space:]]Diff[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 39 | Magnitude[[:space:]]Diff.png filter=lfs diff=lfs merge=lfs -text 40 | Magnitude[[:space:]]Plus[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 41 | Magnitude[[:space:]]Plus.png filter=lfs diff=lfs merge=lfs -text 42 | Plane[[:space:]]History[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 43 | Plane[[:space:]]History.png filter=lfs diff=lfs merge=lfs -text 44 | Thailand[[:space:]]Provinces[[:space:]]Quadtree.png filter=lfs diff=lfs merge=lfs -text 45 | Thailand[[:space:]]Provinces[[:space:]]Quadtree[[:space:]]Zoom[[:space:]]Landscape.png filter=lfs diff=lfs merge=lfs -text 46 | Thailand[[:space:]]Provinces[[:space:]]Quadtree[[:space:]]Zoom.png filter=lfs diff=lfs merge=lfs -text 47 | Tracking.png filter=lfs diff=lfs merge=lfs -text 48 | Travel[[:space:]]frequency[[:space:]]between[[:space:]]province.png filter=lfs diff=lfs merge=lfs -text 49 | Tweet[[:space:]]frequency[[:space:]]by[[:space:]]day[[:space:]]in[[:space:]]week.png filter=lfs diff=lfs merge=lfs -text 50 | Tweet[[:space:]]frequency[[:space:]]during[[:space:]]the[[:space:]]day.png filter=lfs diff=lfs merge=lfs -text 51 | Tweet[[:space:]]frequency[[:space:]]of[[:space:]]overall[[:space:]]collected[[:space:]]data.png filter=lfs diff=lfs merge=lfs -text 52 | Tweet[[:space:]]frequency.png filter=lfs diff=lfs merge=lfs -text 53 | Two[[:space:]]way[[:space:]]connection.png filter=lfs diff=lfs merge=lfs -text 54 | Two[[:space:]]way[[:space:]]landscape.png filter=lfs diff=lfs merge=lfs -text 55 | User[[:space:]]per[[:space:]]province.png filter=lfs diff=lfs merge=lfs -text 56 | Chiang[[:space:]]Mai[[:space:]]Inbound[[:space:]]Flight.png filter=lfs diff=lfs merge=lfs -text 57 | Chiang[[:space:]]Mai[[:space:]]Inbound[[:space:]]Flight[[:space:]](Zoom).png filter=lfs diff=lfs merge=lfs -text 58 | Tracking[[:space:]]Flight.png filter=lfs diff=lfs merge=lfs -text 59 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_Score.csv: -------------------------------------------------------------------------------- 1 | name,score,number of user,total connection,point,province code 2 | Amnat Charoen,3.938650306748466,163,642.0,POINT(104.72915159 15.8623982644),37 3 | Ang Thong,5.477434679334917,842,4612.0,POINT(100.34145623 14.6380639474),15 4 | Phra Nakhon Si Ayutthaya,4.305821665438467,6785,29214.999999999996,POINT(100.514170724 14.4207801749),14 5 | Bangkok,2.00071019700865,70403,140856.0,POINT(100.557322973 13.7175975701),10 6 | Bueng Kan,3.515151515151515,198,696.0,POINT(103.722237352 18.0575482114),38 7 | Buriram,3.5630810092961487,1506,5366.0,POINT(102.967514344 15.1005920882),31 8 | Chonburi,3.142345948568656,16488,51811.0,POINT(101.121827441 13.0460828469),20 9 | Chachoengsao,4.89546943231441,3664,17937.0,POINT(101.41696414 13.5412867511),24 10 | Chiang Mai,2.3008938981733387,12865,29601.000000000004,POINT(98.7736976232 18.9084414401),50 11 | Chai Nat,6.037096774193548,620,3743.0,POINT(99.9966639648 15.1889341114),18 12 | Chaiyaphum,3.7609254498714653,778,2926.0,POINT(101.950256984 16.1453092103),36 13 | Chumphon,4.672839506172839,648,3028.0,POINT(98.9038728634 10.2984795764),86 14 | Chiang Rai,2.5166698059898285,5309,13361.0,POINT(99.8463306614 19.7614170952),57 15 | Chanthaburi,4.232271325796505,2919,12353.999999999998,POINT(102.128935757 12.7850531428),22 16 | Krabi,1.7032694475760992,4435,7554.0,POINT(98.8832146297 7.9091448048),81 17 | Khon Kaen,2.931146946910672,5519,16177.0,POINT(102.47117486 16.4033200124),40 18 | Kamphaeng Phet,4.607650273224044,915,4216.0,POINT(99.4840870778 16.3504084467),62 19 | Kanchanaburi,3.9435979684576314,3741,14753.0,POINT(99.0508269362 14.6142660015),71 20 | Kalasin,3.8464566929133857,762,2931.0,POINT(103.623492533 16.5959516038),46 21 | Loei Province,3.726061615320566,1201,4475.0,POINT(101.552343004 17.4924428641),42 22 | Lampang,3.5934931506849317,2920,10493.0,POINT(99.5103521938 18.2741029435),52 23 | Lamphun,4.156416097190585,1317,5474.0,POINT(98.9674006597 18.0768881064),51 24 | Lopburi Province,4.613887086307592,1541,7110.0,POINT(100.897002401 15.11760038),16 25 | Mukdahan,4.245810055865922,358,1520.0000000000002,POINT(104.435295454 16.5902346448),49 26 | Maha Sarakham,2.5886143931256713,2793,7230.0,POINT(103.187269825 16.0737469859),44 27 | Mae Hong Son,3.5586690017513134,571,2032.0,POINT(97.9474324868 18.7273332925),58 28 | Nan,3.9488559892328396,743,2934.0,POINT(100.817084443 18.8280594829),55 29 | Nonthaburi,3.6378357286856993,15377,55939.0,POINT(100.356517706 13.9498544093),12 30 | Nong Bua Lam Phu,3.9285714285714284,224,880.0,POINT(102.244010092 17.1948308266),39 31 | Nong Khai,3.2576923076923077,1300,4235.0,POINT(102.77240708 17.9729280256),43 32 | Nakhon Ratchasima,3.439516664453592,7531,25903.0,POINT(102.162650043 15.0280360626),30 33 | Nakhon Phanom,3.708722741433022,642,2381.0,POINT(104.319004039 17.4294095463),48 34 | Nakhon Pathom,3.879781420765027,8052,31240.0,POINT(100.068033595 13.8876112057),73 35 | Nakhon Si Thammarat,3.252297410192147,1197,3893.0,POINT(99.7073199322 8.51358626995),80 36 | Nakhon Sawan,4.587796925943176,2147,9850.0,POINT(99.9869845225 15.6823145632),60 37 | Narathiwat,0.8671248568155785,873,757.0,POINT(101.751727633 6.12680622765),96 38 | Nakhon Nayok,4.372159090909091,2464,10773.0,POINT(101.218224714 14.262571957),26 39 | Phetchaburi,4.358724832214765,5960,25978.0,POINT(99.6075392745 12.9986537807),76 40 | Phichit,4.970443349753695,609,3027.0,POINT(100.409668319 16.2635958818),66 41 | Prachuap Khiri Khan,4.339589905362776,6340,27513.0,POINT(99.5777392025 11.8001333794),77 42 | Phuket,1.6826561660998747,5587,9401.0,POINT(98.2727379223 7.86370621154),83 43 | Phatthalung,3.2150776053215075,451,1450.0,POINT(100.045088379 7.45917876629),93 44 | Phitsanulok,4.076310272536688,2385,9722.0,POINT(100.518454781 17.0947359704),65 45 | Phang Nga,2.824127906976744,1376,3886.0,POINT(98.1018967416 8.69774345234),82 46 | Phetchabun,3.3503184713375798,2198,7364.0,POINT(101.242596454 16.3926965851),67 47 | Phrae,4.248355263157895,1216,5166.0,POINT(100.012937431 18.2139119856),54 48 | Prachinburi,4.0371248025276465,1266,5111.000000000001,POINT(101.618777543 14.0445407759),25 49 | Pathum Thani,3.6685702490711436,14534,53319.0,POINT(100.56915304 14.0830923585),13 50 | Pattani,2.4577464788732395,426,1047.0,POINT(101.347821677 6.73989916225),94 51 | Phayao,3.419330289193303,1314,4493.0,POINT(100.225624368 19.2180780435),56 52 | Ratchaburi,3.749869859448204,3842,14407.0,POINT(99.5857449774 13.5495309307),70 53 | Roi Et,3.67587327376117,1231,4525.0,POINT(103.828448191 15.9385220182),45 54 | Ranong,4.092592592592593,216,884.0,POINT(98.563678981 9.92248571424),85 55 | Rayong,3.938844847112118,4415,17390.0,POINT(101.343222133 12.8409659694),21 56 | Sing Buri,6.319169960474309,1012,6395.0,POINT(100.320977667 14.8716158255),17 57 | Songkhla,1.3996713904292462,4869,6814.999999999999,POINT(100.548759187 6.94884143693),90 58 | Samut Songkhram,4.930336168489267,2469,12173.0,POINT(99.9367402385 13.3593198916),75 59 | Samut Sakhon,4.97076435364565,2839,14112.0,POINT(100.177263278 13.5962888145),74 60 | Sa Kaeo,4.404423380726699,633,2788.0,POINT(102.332311439 13.6777234283),27 61 | Surat Thani,2.2805482648002333,3429,7820.0,POINT(99.099159387 9.13381321812),84 62 | Sakon Nakhon,3.0252844500632112,791,2393.0,POINT(103.822703129 17.5131235152),47 63 | Suphan Buri,4.665369649805448,2056,9592.0,POINT(99.8038953973 14.648468015),72 64 | Samut Prakan,3.315972426795499,16973,56282.0,POINT(100.622262423 13.5941395905),11 65 | Saraburi,4.939416328038419,2707,13371.0,POINT(101.026016661 14.6689938567),19 66 | Surin,3.7415584415584417,770,2881.0,POINT(103.655766949 14.9277736873),32 67 | Sisaket,2.7688540646425075,1021,2827.0,POINT(104.40982653 14.9516411754),33 68 | Sukhothai,4.39185393258427,712,3127.0,POINT(99.7963503647 17.3641392291),64 69 | Satun,2.405857740585774,717,1725.0,POINT(99.5703559981 6.7318170405),91 70 | Tak,4.590604026845638,894,4104.0,POINT(98.6551659992 16.6465147647),63 71 | Trang,3.542274052478134,686,2430.0,POINT(99.3599859433 7.48356217488),92 72 | Trat,3.6037581699346406,1224,4411.0,POINT(102.503195011 12.1382302437),23 73 | Ubon Ratchathani,2.4055090655509064,2868,6898.999999999999,POINT(104.950118622 15.2036640615),34 74 | Udon Thani,2.8049288441513363,2881,8081.0,POINT(102.840541098 17.512721051),41 75 | Uttaradit,5.254874651810585,718,3773.0,POINT(100.431418199 17.7260698659),53 76 | Uthai Thani,4.924444444444444,450,2216.0,POINT(99.5807809841 15.3329804403),61 77 | Yala,2.5176151761517613,369,928.9999999999999,POINT(101.188657942 6.16406279095),95 78 | Yasothon,4.376044568245125,359,1570.9999999999998,POINT(104.371511185 15.8497001429),35 79 | -------------------------------------------------------------------------------- /Province/province_qtree_shapefile.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import csv 3 | from math import * 4 | from quad_tree import * 5 | from province_grid import * 6 | from provinces import ProvinceSyncer 7 | import shapefile 8 | from matplotlib.path import Path 9 | import numpy as np 10 | 11 | def genSamplingPoints(startPoint, diff): 12 | return [startPoint 13 | # Inner round 14 | , startPoint + diff 15 | , Point(startPoint.x - diff.x, startPoint.y + diff.y) 16 | , startPoint - diff 17 | , Point(startPoint.x + diff.x, startPoint.y - diff.y) 18 | # Border corner 19 | , startPoint + diff*2 20 | , Point(startPoint.x - diff.x*2, startPoint.y + diff.y*2) 21 | , startPoint - diff*2 22 | , Point(startPoint.x + diff.x*2, startPoint.y - diff.y*2) 23 | # Border middle 24 | , Point(startPoint.x, startPoint.y + diff.y*2) 25 | , Point(startPoint.x, startPoint.y - diff.y*2) 26 | , Point(startPoint.x + diff.x*2, startPoint.y) 27 | , Point(startPoint.x - diff.x*2, startPoint.y) 28 | ] 29 | 30 | class ProvinceShape: 31 | def __init__(self, name, pathPoints): 32 | self.name = name 33 | 34 | shapes = [] 35 | shapes.append([]) 36 | shapeCount = 0 37 | startPoint = pathPoints[0] 38 | shapes[shapeCount].append(startPoint) 39 | 40 | i = 1 41 | self.bbMin = Point(startPoint[0], startPoint[1]) 42 | self.bbMax = Point(startPoint[0], startPoint[1]) 43 | 44 | pointSum = Point(value = 0) 45 | 46 | while i < len(pathPoints): 47 | shapes[shapeCount].append(pathPoints[i]) 48 | 49 | # Set bounding box 50 | x = pathPoints[i][0] 51 | y = pathPoints[i][1] 52 | if self.bbMin.x > x: 53 | self.bbMin.x = x 54 | if self.bbMin.y > y: 55 | self.bbMin.y = y 56 | if self.bbMax.x < x: 57 | self.bbMax.x = x 58 | if self.bbMax.y < y: 59 | self.bbMax.y = y 60 | 61 | pointSum.x += x 62 | pointSum.y += y 63 | 64 | # Split shapes 65 | if pathPoints[i] == startPoint: 66 | shapes.append([]) 67 | shapeCount += 1 68 | i += 1 69 | try: 70 | startPoint = pathPoints[i] 71 | shapes[shapeCount].append(startPoint) 72 | except: 73 | del shapes[shapeCount] 74 | break 75 | i += 1 76 | 77 | # self.path = Path(np.array(pathPoints)) 78 | self.paths = [] 79 | for shape in shapes: 80 | self.paths.append(Path(np.array(shape))) 81 | 82 | self.centroid = pointSum / len(pathPoints) 83 | 84 | 85 | def isContainPoint(self, point): 86 | for path in self.paths: 87 | if path.contains_point(point): 88 | return True 89 | 90 | return False 91 | 92 | def isIntersectBBox(self, bbox): 93 | for path in self.paths: 94 | if path.intersects_bbox(bbox): 95 | return True 96 | 97 | return False 98 | 99 | def buildGridAndTree(shapeFile, boxKm = 10): 100 | 101 | overAllBBox = Rectangle( 102 | btmLeft = Point(shapeFile.bbox[0], shapeFile.bbox[1]) 103 | , topRight = Point(shapeFile.bbox[2], shapeFile.bbox[3]) 104 | ) 105 | midPoint = (overAllBBox.btmLeft + overAllBBox.topRight) / 2 106 | 107 | if overAllBBox.getWidth() > overAllBBox.getHeight(): 108 | mainSideWidth = overAllBBox.getWidth() 109 | else: 110 | mainSideWidth = overAllBBox.getHeight() 111 | 112 | mainHalfWidth = Point(value = mainSideWidth/2) 113 | 114 | pvGrid = ProviGridParm( 115 | btmLeft = midPoint - mainHalfWidth 116 | , topRight = midPoint + mainHalfWidth 117 | , boxKm = boxKm 118 | ) 119 | 120 | print 'Maxlevel: '+str(pvGrid.maxLevel) 121 | 122 | pvTree = QuadTree( 123 | level = 0 124 | , rect = Rectangle( 125 | btmLeft = pvGrid.btmLeft 126 | , topRight = pvGrid.topRight 127 | ) 128 | , maxLevel = pvGrid.maxLevel 129 | ) 130 | 131 | return (pvGrid, pvTree) 132 | 133 | def buildProvinceShape(shapeFile, provinceAbbrCsv): 134 | pvPaths = shapeFile.shapes() 135 | records = shapeFile.records() 136 | pvShapes = {} 137 | pvSyncer = ProvinceSyncer(provinceAbbrCsv) 138 | for i in range(len(records)): 139 | name = pvSyncer.SyncProvinceName(records[i][2]) 140 | if name not in pvShapes.keys(): 141 | pvShapes[name] = ProvinceShape( 142 | name = name 143 | , pathPoints = pvPaths[i].points 144 | ) 145 | return pvShapes 146 | 147 | def scanGridByProvince(pvGrid, pvTree, pvShapes): 148 | for pvShape in pvShapes.values(): 149 | print pvShape.name 150 | 151 | # Get border grid 152 | topLeft = pvGrid.snapToGrid( 153 | Point(pvShape.bbMin.x, pvShape.bbMax.y) 154 | ) 155 | topRight = pvGrid.snapToGrid(pvShape.bbMax) 156 | btmLeft = pvGrid.snapToGrid(pvShape.bbMin) 157 | 158 | # Get number of grid in lat lon 159 | nLonBox = int((topRight.x - topLeft.x) / pvGrid.lonBoxSize) 160 | nLatBox = int((topLeft.y - btmLeft.y) / pvGrid.latBoxSize) 161 | 162 | for iLat in range(nLatBox) : 163 | for iLon in range(nLonBox): 164 | lat = topLeft.y - (iLat + 0.5) * pvGrid.latBoxSize 165 | lon = topLeft.x + (iLon + 0.5) * pvGrid.lonBoxSize 166 | testPoints = genSamplingPoints(Point(lon, lat), Point(pvGrid.lonBoxSize/4, pvGrid.latBoxSize/4)) 167 | 168 | count = 0 169 | for point in testPoints: 170 | if pvShape.isContainPoint(point.getTuple()): 171 | count += 1 172 | 173 | if count != 0: 174 | pvTree.AddDictValue( 175 | point= Point(lon, lat) 176 | , value ={count / float(len(testPoints)) 177 | : pvShape.name}) 178 | 179 | pvTree.OptimizeTree() 180 | 181 | if __name__ == '__main__': 182 | 183 | if(len(sys.argv) < 4): 184 | print 'Please insert province shapefile and export file names' 185 | exit() 186 | 187 | sf = shapefile.Reader(sys.argv[1]) 188 | gridSize = input('Grid size(km): ') 189 | pvGrid, pvTree = buildGridAndTree(sf, boxKm = gridSize) 190 | pvTree.Span() 191 | pvShapes = buildProvinceShape(sf, './Province from Wiki Html table to CSV/ThailandProvinces_abbr.csv') 192 | 193 | scanGridByProvince(pvGrid, pvTree, pvShapes) 194 | 195 | # Write out 196 | pvTree.WriteBoxCSVStart(csvFileName = sys.argv[2]) 197 | pvTree.exportTreeStructStart(csvFileName = sys.argv[3]) 198 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_All_Divide_1000.csv: -------------------------------------------------------------------------------- 1 | ,Amnat Charoen,Ang Thong,Phra Nakhon Si Ayutthaya,Bangkok,Bueng Kan,Buriram,Chonburi,Chachoengsao,Chiang Mai,Chai Nat,Chaiyaphum,Chumphon,Chiang Rai,Chanthaburi,Krabi,Khon Kaen,Kamphaeng Phet,Kanchanaburi,Kalasin,Loei Province,Lampang,Lamphun,Lopburi Province,Mukdahan,Maha Sarakham,Mae Hong Son,Nan,Nonthaburi,Nong Bua Lam Phu,Nong Khai,Nakhon Ratchasima,Nakhon Phanom,Nakhon Pathom,Nakhon Si Thammarat,Nakhon Sawan,Narathiwat,Nakhon Nayok,Phetchaburi,Phichit,Prachuap Khiri Khan,Phuket,Phatthalung,Phitsanulok,Phang Nga,Phetchabun,Phrae,Prachinburi,Pathum Thani,Pattani,Phayao,Ratchaburi,Roi Et,Ranong,Rayong,Sing Buri,Songkhla,Samut Songkhram,Samut Sakhon,Sa Kaeo,Surat Thani,Sakon Nakhon,Suphan Buri,Samut Prakan,Saraburi,Surin,Sisaket,Sukhothai,Satun,Tak,Trang,Trat,Ubon Ratchathani,Udon Thani,Uttaradit,Uthai Thani,Yala,Yasothon 2 | Amnat Charoen,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 3 | Ang Thong,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 4 | Phra Nakhon Si Ayutthaya,0,0,0,5,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 5 | Bangkok,0,0,5,0,0,0,11,3,5,0,0,0,2,2,1,2,0,2,0,0,1,0,1,0,0,0,0,13,0,0,4,0,6,0,1,0,2,4,0,5,1,0,1,0,1,0,0,11,0,0,2,0,0,3,0,1,2,2,0,1,0,1,14,2,0,0,0,0,0,0,0,1,1,0,0,0,0 6 | Bueng Kan,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 7 | Buriram,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 8 | Chonburi,0,0,1,11,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0 9 | Chachoengsao,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 10 | Chiang Mai,0,0,0,5,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 11 | Chai Nat,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 12 | Chaiyaphum,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 13 | Chumphon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 14 | Chiang Rai,0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 15 | Chanthaburi,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 16 | Krabi,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 17 | Khon Kaen,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 18 | Kamphaeng Phet,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 19 | Kanchanaburi,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 20 | Kalasin,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 21 | Loei Province,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 22 | Lampang,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 23 | Lamphun,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 24 | Lopburi Province,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 25 | Mukdahan,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 26 | Maha Sarakham,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 27 | Mae Hong Son,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 28 | Nan,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 29 | Nonthaburi,0,0,1,13,0,0,3,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,1,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0 30 | Nong Bua Lam Phu,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 31 | Nong Khai,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 32 | Nakhon Ratchasima,0,0,1,4,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 33 | Nakhon Phanom,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 34 | Nakhon Pathom,0,0,0,6,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0 35 | Nakhon Si Thammarat,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 36 | Nakhon Sawan,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 37 | Narathiwat,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 38 | Nakhon Nayok,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 39 | Phetchaburi,0,0,0,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 40 | Phichit,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 41 | Prachuap Khiri Khan,0,0,0,5,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 42 | Phuket,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 43 | Phatthalung,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 44 | Phitsanulok,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 45 | Phang Nga,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 46 | Phetchabun,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 47 | Phrae,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 48 | Prachinburi,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 49 | Pathum Thani,0,0,2,11,0,0,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,1,0,1,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 50 | Pattani,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 51 | Phayao,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 52 | Ratchaburi,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 53 | Roi Et,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 54 | Ranong,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 55 | Rayong,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 56 | Sing Buri,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 57 | Songkhla,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 58 | Samut Songkhram,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 59 | Samut Sakhon,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 60 | Sa Kaeo,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 61 | Surat Thani,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 62 | Sakon Nakhon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 63 | Suphan Buri,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 64 | Samut Prakan,0,0,1,14,0,0,4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,1,0,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 65 | Saraburi,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 66 | Surin,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 67 | Sisaket,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 68 | Sukhothai,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 69 | Satun,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 70 | Tak,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 71 | Trang,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 72 | Trat,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 73 | Ubon Ratchathani,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 74 | Udon Thani,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 75 | Uttaradit,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 76 | Uthai Thani,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 77 | Yala,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 78 | Yasothon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 79 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_TwoWay_12Hours.csv: -------------------------------------------------------------------------------- 1 | ,Amnat Charoen,Ang Thong,Phra Nakhon Si Ayutthaya,Bangkok,Bueng Kan,Buriram,Chonburi,Chachoengsao,Chiang Mai,Chai Nat,Chaiyaphum,Chumphon,Chiang Rai,Chanthaburi,Krabi,Khon Kaen,Kamphaeng Phet,Kanchanaburi,Kalasin,Loei Province,Lampang,Lamphun,Lopburi Province,Mukdahan,Maha Sarakham,Mae Hong Son,Nan,Nonthaburi,Nong Bua Lam Phu,Nong Khai,Nakhon Ratchasima,Nakhon Phanom,Nakhon Pathom,Nakhon Si Thammarat,Nakhon Sawan,Narathiwat,Nakhon Nayok,Phetchaburi,Phichit,Prachuap Khiri Khan,Phuket,Phatthalung,Phitsanulok,Phang Nga,Phetchabun,Phrae,Prachinburi,Pathum Thani,Pattani,Phayao,Ratchaburi,Roi Et,Ranong,Rayong,Sing Buri,Songkhla,Samut Songkhram,Samut Sakhon,Sa Kaeo,Surat Thani,Sakon Nakhon,Suphan Buri,Samut Prakan,Saraburi,Surin,Sisaket,Sukhothai,Satun,Tak,Trang,Trat,Ubon Ratchathani,Udon Thani,Uttaradit,Uthai Thani,Yala,Yasothon 2 | Amnat Charoen,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,0,11,0,0,0,0,4 3 | Ang Thong,0,0,117,16,0,0,2,3,0,1,0,0,0,0,1,0,1,2,0,0,1,0,7,0,0,0,0,11,0,0,2,0,5,0,8,0,0,0,0,0,0,0,1,0,1,0,0,22,0,0,1,0,0,0,55,0,0,3,0,0,0,18,1,7,0,0,0,0,0,0,0,0,0,2,1,0,0 4 | Phra Nakhon Si Ayutthaya,0,133,0,626,0,0,37,17,11,21,2,10,0,7,1,3,10,8,1,0,6,0,43,1,3,1,1,113,0,0,57,0,32,2,58,0,12,7,5,3,4,1,14,2,5,4,1,613,0,0,5,1,1,8,81,0,7,20,1,2,0,60,49,178,2,1,5,0,3,13,1,0,0,5,7,0,1 5 | Bangkok,1,55,904,0,0,30,1152,642,289,30,9,23,101,59,49,133,26,179,4,28,57,5,68,1,18,15,24,6070,0,11,296,11,1846,29,82,7,202,355,14,191,80,5,56,20,71,9,50,5086,5,1,378,22,6,172,82,105,252,720,20,63,7,129,8561,303,9,6,10,5,15,27,22,93,101,9,10,5,2 6 | Bueng Kan,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,13,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,0,0,12,0,0,0,0 7 | Buriram,1,0,7,30,0,0,4,2,4,0,4,0,0,5,0,8,0,0,1,0,2,0,0,0,13,0,0,1,0,2,79,0,2,0,0,0,1,0,0,2,0,0,1,0,0,1,2,1,0,0,0,3,0,0,0,0,0,1,8,1,1,1,0,9,48,9,1,0,0,0,0,4,0,0,0,0,2 8 | Chonburi,0,3,44,1104,0,7,0,728,14,6,2,2,4,43,2,11,2,13,0,2,10,2,1,0,3,3,1,68,0,2,37,0,22,2,15,0,7,14,0,4,1,0,4,1,14,0,34,141,0,2,8,1,0,275,8,1,6,16,5,4,1,8,436,10,2,0,0,3,0,0,4,2,7,0,1,0,0 9 | Chachoengsao,0,2,13,331,0,1,208,0,0,0,0,0,0,20,0,4,0,1,0,0,1,0,1,0,0,0,1,25,0,0,9,0,7,0,0,0,12,4,1,0,0,0,1,0,0,0,35,47,0,0,1,0,0,36,2,0,4,10,19,1,0,2,140,6,1,0,0,0,2,0,1,0,0,1,1,0,0 10 | Chiang Mai,0,1,19,473,0,3,18,3,0,2,2,1,202,0,10,7,29,1,0,5,308,603,3,1,5,45,7,18,0,2,7,0,6,0,24,1,1,2,2,5,9,1,9,4,11,33,1,26,1,13,8,1,0,10,6,3,1,0,1,5,1,0,168,3,0,5,14,2,38,0,1,7,15,13,0,0,1 11 | Chai Nat,0,8,24,13,0,0,2,1,1,0,1,0,1,0,0,0,5,3,0,0,2,0,5,0,0,0,0,4,0,0,2,0,1,0,40,0,0,1,4,1,0,0,7,0,0,0,0,6,0,0,0,0,0,3,40,0,0,1,0,0,0,21,3,2,0,0,0,0,3,0,0,0,0,2,19,0,0 12 | Chaiyaphum,0,0,4,15,0,1,1,0,3,0,0,0,2,0,0,26,0,0,1,3,1,0,7,0,1,0,0,0,0,1,54,1,0,0,1,0,0,1,1,0,0,0,2,0,6,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,1,0,0,0,0,0,1,5,0,0,0,0 13 | Chumphon,0,0,7,14,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,5,0,0,0,11,0,44,1,0,0,5,0,0,0,0,1,0,1,0,2,0,0,1,2,3,0,21,0,0,0,0,0,0,0,0,0,12,1,0,0,0,0,0,0 14 | Chiang Rai,0,1,5,227,0,0,7,0,178,2,0,1,0,0,2,3,1,0,0,1,35,14,0,0,1,3,4,4,0,0,2,0,0,0,7,0,0,4,4,2,3,0,17,1,1,24,2,7,0,160,4,0,0,2,2,2,0,0,0,0,1,2,79,0,4,0,0,0,2,0,0,1,2,13,0,0,0 15 | Chanthaburi,0,0,5,52,0,3,94,83,2,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,2,0,0,9,0,0,1,0,4,0,0,0,0,1,0,0,0,0,1,0,1,0,5,4,0,0,1,0,1,192,0,0,0,4,17,0,1,1,18,2,2,2,0,0,1,0,43,0,0,0,0,0,0 16 | Krabi,0,0,3,72,0,0,3,0,16,0,0,2,1,0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,9,2,2,0,2,0,2,105,14,1,65,2,2,0,1,1,0,1,0,0,1,0,51,1,1,1,23,0,0,14,0,0,0,0,10,0,65,0,0,1,0,0,0,0 17 | Khon Kaen,1,0,19,128,0,10,5,6,3,0,46,0,0,1,0,0,0,1,65,24,1,2,2,2,176,0,0,5,10,25,170,2,1,0,0,0,1,0,0,1,1,0,5,0,36,0,5,12,0,1,1,42,0,5,1,0,0,1,0,1,3,2,34,13,2,0,0,0,0,0,0,15,163,2,0,0,10 18 | Kamphaeng Phet,0,2,15,10,0,1,0,0,2,6,0,0,1,0,0,0,0,1,0,0,28,3,2,0,0,1,1,1,0,1,0,0,1,0,77,0,0,0,5,0,0,0,10,0,2,2,0,4,0,3,0,0,0,0,11,0,0,0,0,0,0,3,4,3,0,0,9,0,32,0,1,1,0,0,1,0,0 19 | Kanchanaburi,0,2,11,162,0,1,18,3,5,0,0,0,1,0,1,3,1,0,0,1,1,1,0,0,0,0,1,30,0,0,3,0,188,0,6,0,2,21,0,5,1,0,0,0,0,1,0,22,0,0,130,0,1,1,0,0,7,9,0,2,0,59,5,0,0,0,0,0,2,0,0,1,1,1,0,0,0 20 | Kalasin,0,0,1,2,0,1,0,0,0,0,0,0,0,0,0,46,0,0,0,1,0,0,1,5,176,0,0,0,0,1,5,5,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,21,0,1,0,0,1,0,0,0,2,1,0,3,0,1,0,0,0,0,0,2,9,0,0,0,2 21 | Loei Province,0,0,0,25,1,0,6,1,0,0,2,0,0,0,0,24,0,1,1,0,1,0,1,0,2,0,1,1,10,9,11,0,0,0,0,0,0,0,0,0,2,0,27,0,46,1,1,0,0,1,0,2,0,0,0,2,0,0,0,0,3,1,1,4,0,1,0,0,1,0,0,0,21,5,0,0,0 22 | Lampang,0,0,6,104,0,0,10,1,169,4,0,0,15,0,0,5,46,0,0,0,0,120,1,0,1,1,0,4,0,0,3,0,0,0,38,0,0,3,1,1,0,1,6,0,5,47,1,4,0,52,0,0,0,3,6,0,0,0,0,0,0,6,17,0,0,0,18,0,65,0,0,0,1,12,1,0,0 23 | Lamphun,0,0,2,9,0,0,0,0,273,0,0,0,8,2,0,1,3,0,0,1,77,0,1,0,1,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,3,0,0,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,1,0,0,3,0,0,0 24 | Lopburi Province,0,5,84,52,0,0,4,0,1,5,5,0,0,0,0,1,0,2,0,0,2,0,0,0,1,0,0,4,0,0,8,0,3,0,14,0,0,2,1,0,1,0,3,0,5,0,0,29,0,0,0,0,0,1,38,0,0,1,0,1,0,3,2,97,1,0,1,0,1,0,0,0,0,1,3,0,0 25 | Mukdahan,1,0,1,4,0,0,0,0,0,0,0,0,1,0,0,3,0,0,7,1,0,0,0,0,1,0,0,0,0,0,2,35,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,5,0,0,0,0,0,0,0,0,4,0,0,1,0,0,0,0,1,0,0,9,0,0,0,0,6 26 | Maha Sarakham,1,0,11,26,0,19,3,1,6,0,3,0,1,2,0,327,0,1,142,2,0,0,1,3,0,1,1,1,0,1,60,4,0,1,0,0,0,4,0,5,0,0,1,0,8,0,4,6,0,0,0,136,0,1,1,0,0,0,1,0,0,0,4,6,5,2,1,0,0,0,0,4,13,2,0,0,11 27 | Mae Hong Son,0,0,0,11,0,0,1,0,62,1,0,0,3,0,2,0,1,0,0,0,2,1,0,1,1,0,0,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0 28 | Nan,0,0,0,26,0,0,2,0,7,1,0,0,1,0,1,1,1,0,0,1,3,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,1,42,0,0,0,11,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,8,0,0,0 29 | Nonthaburi,0,8,138,5284,0,1,68,34,7,8,0,0,6,4,1,6,1,15,1,0,3,0,10,0,1,1,2,0,0,1,38,0,312,0,12,0,16,40,2,11,1,0,3,0,4,1,7,975,0,0,23,1,0,17,11,2,17,59,1,0,1,51,238,31,0,0,0,0,0,1,3,1,2,2,5,0,1 30 | Nong Bua Lam Phu,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,10,0,0,0,4,1,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,28,0,0,0,0 31 | Nong Khai,0,0,1,11,8,0,2,0,2,0,1,0,1,0,0,27,0,0,2,3,0,0,0,0,3,0,0,0,5,0,12,1,0,0,0,0,0,1,0,1,0,0,0,0,4,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,3,0,3,3,0,0,0,0,1,0,0,0,424,0,0,0,2 32 | Nakhon Ratchasima,1,0,200,274,0,84,21,19,6,1,48,0,2,3,0,110,0,4,5,2,1,0,16,0,28,0,1,41,1,3,0,0,11,2,6,0,102,7,2,5,1,0,3,1,15,1,96,98,0,0,3,8,0,6,3,0,2,4,5,0,3,4,20,326,18,8,0,0,0,0,0,6,8,1,2,0,3 33 | Nakhon Phanom,5,1,0,16,3,0,0,0,1,0,0,0,0,1,0,4,0,0,3,0,0,0,0,29,6,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,1,0,1,0,0,0,0,0,31,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,2 34 | Nakhon Pathom,0,2,24,1242,0,1,12,8,8,3,1,1,1,3,0,3,2,92,0,0,0,0,2,0,1,0,0,274,0,1,10,0,0,0,3,0,0,43,0,20,0,0,4,0,1,0,3,85,0,0,222,0,0,0,3,2,41,167,2,1,0,54,59,8,0,0,2,0,0,0,0,0,7,1,2,1,0 35 | Nakhon Si Thammarat,0,0,3,37,0,0,5,0,0,0,0,3,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,3,15,0,4,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,36,0,0,4,1,0,0,0,2,0,7,0,0,1,0,0,0,0 36 | Nakhon Sawan,0,11,78,67,0,0,7,4,3,61,5,0,2,0,1,0,59,1,0,2,18,4,14,0,0,0,2,11,0,0,2,0,4,0,0,0,1,7,49,0,0,0,62,0,5,12,0,30,0,4,2,0,0,2,78,1,0,0,0,0,0,26,6,4,0,0,3,0,20,0,0,0,0,10,37,0,0 37 | Narathiwat,0,0,0,9,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,5,0 38 | Nakhon Nayok,0,1,25,127,0,2,6,13,2,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0,0,0,10,0,0,71,0,8,0,0,0,0,2,0,1,1,0,1,0,0,0,49,216,0,0,2,0,0,3,2,0,0,0,2,1,0,0,17,29,0,0,0,0,0,0,0,0,0,0,0,0,0 39 | Phetchaburi,0,1,9,356,0,0,11,6,5,1,1,4,1,2,0,1,0,13,0,0,1,0,0,1,4,1,1,40,0,1,11,0,70,2,5,0,0,0,0,847,0,0,0,0,1,0,1,30,1,0,168,1,1,1,3,0,182,290,0,3,0,9,37,2,0,0,0,0,1,0,5,2,1,0,0,0,0 40 | Phichit,0,1,7,11,0,0,0,0,2,4,0,0,0,0,0,0,2,0,0,1,0,0,5,0,0,0,0,3,0,0,1,0,0,0,52,0,0,1,0,0,0,0,71,0,9,3,0,5,0,1,0,0,0,0,12,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,5,1,0,0 41 | Prachuap Khiri Khan,0,0,5,176,0,1,7,2,3,0,1,25,2,0,1,1,0,3,0,0,1,0,0,0,3,1,0,21,0,1,4,0,28,5,4,0,0,1321,1,0,1,2,1,1,4,0,0,17,0,1,47,0,0,1,1,0,69,150,0,9,1,3,20,2,0,0,0,0,1,1,0,1,0,0,0,0,0 42 | Phuket,0,0,7,100,0,0,3,0,9,0,0,3,1,1,180,2,0,2,0,0,0,0,0,0,0,0,0,1,0,0,4,0,1,3,0,0,0,0,0,5,0,3,2,214,10,0,0,0,0,0,3,0,0,1,0,12,0,1,0,21,0,0,78,0,0,0,0,1,0,3,0,0,4,0,0,1,0 43 | Phatthalung,0,0,3,7,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,2,0,0,0,1,0,0,0,3,0,0,0,0,1,0,0,0,0,0,0,34,0,0,0,3,0,0,1,0,0,0,0,1,0,22,0,0,0,0,0,0,0 44 | Phitsanulok,0,2,24,50,0,0,2,0,10,11,0,0,5,0,0,4,10,1,1,21,8,1,3,0,0,0,1,4,1,1,3,2,1,0,59,0,0,2,52,1,0,0,0,0,54,45,0,8,0,6,1,0,0,0,18,0,1,1,0,1,0,2,0,2,0,0,40,0,4,0,0,0,0,75,1,0,1 45 | Phang Nga,0,0,6,17,0,0,0,0,1,0,0,5,0,0,53,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,1,0,4,158,0,0,0,1,0,0,3,0,0,1,0,6,0,0,4,0,1,0,14,0,0,3,0,0,0,0,1,0,7,0,0,2,0,0,0,0 46 | Phetchabun,0,0,14,48,0,0,9,1,4,0,6,0,2,1,2,25,0,0,0,20,3,1,34,0,1,1,1,4,0,2,4,0,0,2,4,0,0,1,11,2,6,0,68,2,0,5,0,3,0,2,1,0,0,0,2,1,1,1,1,0,0,3,2,19,0,0,4,0,0,1,0,1,0,9,1,0,2 47 | Phrae,0,0,2,11,0,0,1,0,22,1,0,0,4,0,1,0,0,0,0,1,71,7,0,0,0,1,13,1,0,0,0,0,1,0,7,0,0,1,3,2,0,0,45,0,6,0,0,1,0,27,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,7,0,1,0,0,0,0,63,1,0,0 48 | Prachinburi,0,0,3,29,0,2,9,58,0,0,0,1,0,6,0,2,0,0,0,0,0,0,0,0,0,0,0,6,1,0,36,0,2,0,0,0,63,0,0,0,0,0,0,0,0,0,0,12,0,0,1,1,0,4,0,0,0,2,13,1,1,0,8,3,2,0,0,0,0,0,0,0,0,0,0,0,0 49 | Pathum Thani,0,26,512,3724,0,4,63,29,19,18,1,2,3,5,0,10,10,14,0,0,8,2,20,0,4,1,0,1037,0,2,79,0,81,0,35,0,127,22,3,10,1,2,7,1,4,2,9,0,0,1,17,1,0,9,28,2,13,27,0,1,2,27,227,100,1,3,2,0,3,1,2,6,5,1,1,0,1 50 | Pattani,0,0,0,5,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,7,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0 51 | Phayao,0,0,1,7,0,0,3,0,14,1,0,1,85,0,0,0,1,0,0,2,38,0,0,0,0,0,7,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,8,0,1,31,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,5,0,0,0,0,13,0,0,0 52 | Ratchaburi,0,2,9,277,0,0,9,2,10,2,0,0,2,1,0,0,1,90,0,1,1,0,0,0,0,0,0,21,0,1,7,0,356,0,2,0,3,136,0,30,0,0,0,0,2,1,0,13,0,0,0,1,0,4,0,0,195,66,0,2,1,9,14,2,0,0,0,0,0,0,1,0,0,0,0,0,0 53 | Roi Et,3,0,1,17,1,4,1,0,1,0,2,0,0,0,0,35,0,3,23,1,0,0,0,5,108,0,0,2,0,0,31,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,8,6,0,0,0,0,0,5,2,0,0,0,23 54 | Ranong,0,0,2,4,0,0,1,0,1,0,0,6,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,6,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 55 | Rayong,0,1,8,169,0,1,416,144,5,2,0,0,3,171,0,4,2,1,0,1,3,0,0,0,0,0,0,11,0,0,9,0,4,0,3,1,5,3,1,1,0,0,1,0,5,0,10,19,0,0,2,1,0,0,1,0,0,4,3,0,0,0,35,3,1,3,0,0,0,0,16,0,2,2,0,0,0 56 | Sing Buri,0,58,97,35,0,0,4,2,1,26,0,0,0,0,0,0,10,0,0,0,2,0,28,0,0,0,0,12,0,0,2,0,3,0,41,0,1,1,1,0,0,0,8,0,0,1,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,7,0,0,0,0,3,0,0,0,0,2,7,0,0 57 | Songkhla,0,0,1,106,0,0,2,1,4,1,0,4,2,0,13,0,0,0,0,3,0,0,1,0,1,0,0,2,0,0,0,0,1,24,0,9,1,1,0,2,24,48,0,8,2,0,0,1,29,0,0,0,0,1,0,0,1,0,0,4,0,0,29,0,0,0,0,19,0,26,0,0,1,0,0,5,0 58 | Samut Songkhram,0,1,1,110,0,0,5,2,1,0,0,1,0,0,0,1,0,5,0,1,0,0,0,0,1,0,0,25,0,0,3,0,32,0,1,0,1,138,0,32,1,0,0,0,0,0,0,13,0,0,175,0,0,0,0,1,0,201,0,0,1,0,28,1,0,0,0,0,0,0,0,0,0,0,0,0,0 59 | Samut Sakhon,0,4,9,674,0,0,11,5,0,0,0,0,1,1,0,1,1,5,1,0,0,0,0,0,0,0,0,48,0,0,6,0,156,0,1,0,0,61,0,14,0,0,0,0,0,0,0,32,0,0,34,1,1,4,2,0,82,0,0,0,0,4,63,4,1,0,0,0,0,0,1,0,0,0,2,0,0 60 | Sa Kaeo,0,0,0,18,0,10,5,31,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,25,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,3,3,0,2,0,0,0,0,0,0,0,0,0,0,0 61 | Surat Thani,0,0,1,74,0,1,4,0,10,0,0,38,0,0,17,0,0,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,1,32,0,0,1,3,0,16,20,2,0,11,2,0,1,0,0,0,1,0,0,3,0,4,0,0,0,0,0,0,33,0,0,0,0,1,0,0,1,0,0,0,0,0,0 62 | Sakon Nakhon,1,0,0,8,5,0,0,0,0,0,0,0,0,0,0,12,0,0,11,6,0,0,0,3,8,1,0,0,0,2,3,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,24,0,0,0,3 63 | Suphan Buri,0,49,50,79,0,0,3,2,2,18,0,0,1,0,0,1,3,28,0,0,2,0,4,0,1,0,0,101,0,0,4,0,55,0,10,0,1,7,0,1,0,0,5,0,0,1,0,31,0,0,9,0,0,1,8,0,2,6,0,0,0,0,6,3,0,0,0,0,1,0,0,0,0,2,8,0,0 64 | Samut Prakan,0,2,67,7428,0,4,294,204,28,12,1,0,18,10,2,23,2,7,0,0,6,1,10,0,2,1,0,260,0,2,19,0,88,9,8,0,20,38,0,21,18,0,2,1,6,0,7,271,0,0,14,2,0,35,4,12,23,74,4,9,0,7,0,28,1,1,3,0,2,0,1,11,11,0,2,0,0 65 | Saraburi,0,6,205,166,0,5,7,11,1,1,4,0,0,0,0,5,2,2,0,1,0,0,74,0,0,0,0,24,0,0,159,1,7,0,5,0,35,3,2,0,0,0,1,0,10,0,6,90,0,0,1,0,0,2,4,0,2,2,0,0,0,1,11,0,2,0,0,1,1,0,0,0,0,0,0,0,0 66 | Surin,0,0,5,10,0,45,3,0,0,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,19,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,1,0,0,0,6,0,0,0,0,0,0,2,1,0,0,3,2,0,11,0,0,0,0,0,6,1,0,0,0,1 67 | Sisaket,0,0,2,13,1,14,1,2,4,0,1,0,0,0,1,0,0,0,2,1,0,0,0,0,4,0,0,0,0,0,12,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,5,0,3,0,0,0,0,2,0,0,0,3,1,39,0,0,0,0,0,0,114,0,0,0,0,7 68 | Sukhothai,0,1,2,10,1,1,0,0,5,2,1,0,1,1,0,0,7,2,0,0,14,1,3,0,0,0,0,0,0,0,1,0,2,0,7,0,0,0,1,0,0,0,50,0,2,5,0,1,0,1,1,1,0,0,6,0,0,0,0,0,0,0,3,0,0,0,0,0,8,0,0,0,0,9,0,0,0 69 | Satun,0,0,0,14,0,0,1,0,3,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,0,1,0,0,0,0,0,2,0,3,2,0,0,1,1,0,0,0,0,0,0,54,1,0,0,2,0,0,2,1,0,0,0,0,1,1,1,0,0,0,0,1,0 70 | Tak,0,1,4,16,0,1,0,0,11,1,0,0,1,1,0,1,59,0,0,0,42,6,1,0,0,1,1,2,0,0,0,0,1,0,23,0,0,0,0,0,0,0,8,0,0,3,0,6,0,0,1,0,0,0,11,0,0,0,0,0,2,5,2,1,1,0,12,0,0,0,0,0,1,0,1,0,0 71 | Trang,0,0,16,22,0,0,0,0,0,0,0,11,2,0,25,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,7,0,0,0,0,0,2,4,19,0,4,0,0,0,1,0,0,0,0,0,0,0,16,0,0,0,1,1,0,0,0,0,0,0,3,0,0,0,1,0,0,0,1,0 72 | Trat,0,0,0,45,0,0,17,17,3,0,0,0,1,86,0,1,0,0,0,1,0,0,0,0,0,0,0,6,0,0,2,0,2,0,0,0,1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,28,0,0,0,0,6,0,0,0,8,1,0,0,0,0,0,0,0,1,1,0,0,0,0 73 | Ubon Ratchathani,15,0,6,111,0,13,0,0,3,0,0,0,0,0,2,6,0,0,0,0,1,0,0,13,11,0,0,0,0,0,21,3,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,4,0,0,0,18,0,1,0,1,0,0,1,0,1,0,26,3,14,81,0,0,0,0,0,0,1,0,1,0,32 74 | Udon Thani,0,0,0,73,5,0,1,0,3,0,5,0,0,0,0,141,0,1,6,12,0,1,2,0,9,0,1,1,30,140,21,5,3,0,0,0,0,1,0,1,1,0,6,0,2,2,0,4,0,0,1,0,0,3,0,2,0,0,0,1,16,0,24,0,0,0,0,0,0,0,0,2,0,1,0,0,0 75 | Uttaradit,0,2,5,5,0,0,1,0,3,0,0,0,0,0,0,2,0,0,0,2,14,5,4,0,0,0,4,2,0,1,0,0,1,0,5,0,0,0,8,0,0,0,53,0,6,67,0,1,0,5,0,0,0,2,11,0,1,0,0,0,0,1,1,0,0,0,9,0,1,0,0,0,1,0,0,0,0 76 | Uthai Thani,0,5,11,8,0,0,1,0,0,28,0,0,0,0,0,0,2,0,0,0,0,2,1,0,0,0,0,2,0,0,1,0,1,0,30,0,0,0,0,0,0,0,1,0,1,0,0,3,0,0,0,0,0,1,17,0,0,1,0,0,0,11,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0 77 | Yala,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,7,0,0,0,0,1,0,0,0,0,0,0,0,12,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0 78 | Yasothon,11,0,1,2,0,2,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,4,8,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,13,0,0,0,0,0 79 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_TwoWay_1Day.csv: -------------------------------------------------------------------------------- 1 | ,Amnat Charoen,Ang Thong,Phra Nakhon Si Ayutthaya,Bangkok,Bueng Kan,Buriram,Chonburi,Chachoengsao,Chiang Mai,Chai Nat,Chaiyaphum,Chumphon,Chiang Rai,Chanthaburi,Krabi,Khon Kaen,Kamphaeng Phet,Kanchanaburi,Kalasin,Loei Province,Lampang,Lamphun,Lopburi Province,Mukdahan,Maha Sarakham,Mae Hong Son,Nan,Nonthaburi,Nong Bua Lam Phu,Nong Khai,Nakhon Ratchasima,Nakhon Phanom,Nakhon Pathom,Nakhon Si Thammarat,Nakhon Sawan,Narathiwat,Nakhon Nayok,Phetchaburi,Phichit,Prachuap Khiri Khan,Phuket,Phatthalung,Phitsanulok,Phang Nga,Phetchabun,Phrae,Prachinburi,Pathum Thani,Pattani,Phayao,Ratchaburi,Roi Et,Ranong,Rayong,Sing Buri,Songkhla,Samut Songkhram,Samut Sakhon,Sa Kaeo,Surat Thani,Sakon Nakhon,Suphan Buri,Samut Prakan,Saraburi,Surin,Sisaket,Sukhothai,Satun,Tak,Trang,Trat,Ubon Ratchathani,Udon Thani,Uttaradit,Uthai Thani,Yala,Yasothon 2 | Amnat Charoen,0,0,0,4,0,2,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,3,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,4,0,0,0,0,0,20,0,0,0,0,6 3 | Ang Thong,0,0,151,39,0,0,3,3,0,3,0,0,0,0,1,0,1,2,0,0,1,0,12,0,0,0,0,20,0,0,2,0,11,0,9,0,0,0,0,0,0,0,1,0,1,1,0,33,0,0,1,0,0,0,59,0,0,3,0,0,0,23,6,9,0,0,0,0,1,0,0,0,0,2,3,0,0 4 | Phra Nakhon Si Ayutthaya,0,178,0,1042,0,1,68,25,17,26,2,13,2,12,4,4,11,15,2,0,10,2,67,2,4,1,2,195,0,0,76,0,54,2,62,0,23,12,8,7,6,1,17,6,7,6,6,864,0,0,10,1,1,13,88,2,20,27,1,2,0,95,87,220,3,1,8,0,3,24,2,0,1,6,9,0,1 5 | Bangkok,2,80,1360,0,1,49,2124,906,481,41,13,39,161,144,72,208,41,322,9,37,84,12,124,4,34,26,38,11156,0,17,497,16,2936,44,135,9,361,681,26,412,135,8,98,33,130,18,91,8133,9,7,578,30,12,320,118,143,402,1157,37,92,15,229,13743,425,18,16,17,10,29,33,61,125,130,16,14,5,5 6 | Bueng Kan,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,17,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,1,0,0,0,18,0,0,0,0 7 | Buriram,1,0,7,45,0,0,7,2,6,0,7,0,0,8,0,13,0,1,1,0,2,0,0,1,23,0,0,5,0,2,111,0,2,0,0,0,1,0,0,2,0,0,1,1,2,1,5,3,0,0,0,7,0,0,0,0,0,2,10,1,1,1,3,11,59,9,1,0,0,0,0,7,0,0,0,0,5 8 | Chonburi,0,6,82,1989,0,13,0,791,23,8,2,2,13,91,4,16,3,24,1,6,11,2,8,0,6,4,1,153,0,2,61,0,45,2,21,0,13,22,2,8,4,0,6,2,22,2,42,230,0,3,16,2,0,447,11,2,14,25,6,6,1,16,651,12,5,0,1,3,0,1,8,8,9,1,1,0,0 9 | Chachoengsao,0,2,26,582,0,2,295,0,0,0,0,0,0,34,0,4,0,4,0,0,1,0,2,0,0,0,1,59,0,0,18,0,11,0,2,0,18,6,1,0,0,0,2,0,0,0,47,66,0,0,4,0,0,64,2,0,5,11,22,1,0,3,203,8,1,0,0,0,2,0,2,1,1,1,1,0,0 10 | Chiang Mai,0,1,31,687,0,6,33,8,0,2,4,1,336,3,16,16,43,3,0,5,440,908,6,1,6,75,11,31,0,3,7,1,9,0,37,1,2,6,3,8,11,1,16,6,18,49,2,39,2,25,15,3,0,13,7,4,1,2,1,12,1,4,215,4,1,5,20,2,59,0,4,9,19,15,0,1,1 11 | Chai Nat,0,9,27,24,0,0,5,1,1,0,1,0,1,1,0,0,8,3,0,0,2,0,8,0,0,0,0,7,0,0,2,0,3,0,57,0,0,2,5,1,0,0,11,0,1,0,0,12,0,0,0,0,0,5,44,0,0,3,0,0,0,27,8,3,0,0,0,0,3,0,0,0,0,3,26,1,0 12 | Chaiyaphum,0,0,4,23,0,3,4,0,4,0,0,0,2,1,0,44,1,1,1,4,2,0,8,1,2,0,0,0,1,1,65,1,1,0,1,0,0,1,1,0,0,0,2,1,8,0,0,2,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,12,0,1,0,0,0,0,0,1,5,0,0,0,0 13 | Chumphon,0,0,7,24,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,4,0,0,0,0,1,7,1,0,0,12,0,59,1,1,0,6,0,0,1,0,1,0,1,0,6,0,0,2,3,4,0,31,0,0,1,0,0,0,0,0,0,14,1,0,0,0,0,0,0 14 | Chiang Rai,0,1,6,326,0,0,11,2,348,2,0,1,0,1,2,5,2,0,0,1,53,16,0,0,1,5,8,11,0,0,5,0,0,1,13,0,1,7,7,4,4,0,22,1,5,36,2,8,0,240,5,0,0,3,2,2,0,0,0,0,1,5,93,1,4,0,0,0,2,0,0,1,3,17,0,0,0 15 | Chanthaburi,0,0,10,118,0,5,122,98,4,0,0,0,0,0,0,2,1,1,1,0,2,1,3,0,2,0,0,18,0,0,7,0,5,0,0,0,1,2,0,0,0,0,1,0,1,0,9,8,0,0,3,1,1,248,0,0,0,7,20,0,1,1,28,4,2,3,0,0,1,0,74,0,1,1,0,0,0 16 | Krabi,0,0,6,119,0,0,4,0,21,0,1,2,2,0,0,0,0,1,0,1,1,0,1,0,0,0,0,3,0,0,0,0,0,15,2,3,0,4,0,3,239,18,1,93,5,3,0,2,1,0,1,0,1,2,0,80,4,1,1,35,0,0,17,0,0,0,0,15,0,76,0,0,1,0,0,0,0 17 | Khon Kaen,1,0,21,193,2,18,13,7,14,0,66,1,1,4,0,0,0,2,103,40,2,2,2,7,293,0,0,8,19,41,209,2,3,0,1,0,2,0,1,2,3,0,10,0,48,2,6,22,0,1,3,69,0,13,1,0,0,1,1,1,11,2,40,20,2,3,1,0,1,0,1,23,224,3,0,0,11 18 | Kamphaeng Phet,0,2,16,28,0,1,1,0,5,6,0,0,2,0,0,0,0,3,0,0,30,3,3,1,0,2,2,1,0,1,1,0,1,0,88,0,0,0,5,1,0,0,24,0,2,2,0,5,0,3,1,0,0,1,12,0,0,0,0,0,0,5,6,4,0,0,10,0,38,0,1,1,0,0,2,0,0 19 | Kanchanaburi,0,2,17,302,0,1,26,4,5,0,0,0,2,2,3,5,2,0,0,2,1,1,2,0,0,0,2,54,0,0,8,0,244,0,6,0,3,31,0,11,3,0,0,0,1,1,0,36,0,0,173,2,1,3,0,0,9,15,0,4,0,68,18,2,1,0,0,0,2,1,0,1,1,1,0,0,0 20 | Kalasin,0,0,1,4,0,1,2,0,0,0,0,0,0,0,0,81,0,0,0,1,0,0,1,9,236,1,0,0,0,1,10,9,1,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,37,0,1,0,0,1,0,0,0,6,1,2,3,0,1,0,0,0,0,0,2,11,0,0,0,2 21 | Loei Province,0,0,0,41,1,0,6,1,2,0,3,0,0,0,0,41,1,1,1,0,1,0,3,2,2,0,1,4,16,11,13,0,0,0,2,0,0,0,0,0,2,0,40,1,59,1,2,4,0,1,0,2,0,0,0,2,0,0,0,0,8,1,1,6,0,1,0,0,1,0,1,1,33,5,0,0,0 22 | Lampang,0,1,6,141,0,0,16,2,317,5,0,0,26,0,0,6,52,0,0,0,0,128,1,0,1,1,4,7,0,0,4,0,0,0,46,0,0,4,3,1,0,1,11,0,5,68,1,11,0,65,2,0,0,3,6,0,2,0,0,1,0,6,25,1,0,0,24,0,76,0,0,1,3,20,1,0,0 23 | Lamphun,0,0,2,14,0,0,0,0,504,0,0,0,13,2,0,1,3,0,0,1,95,0,1,0,1,1,0,0,0,0,1,0,1,0,4,0,0,0,0,1,0,0,5,0,0,5,0,0,0,2,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,7,0,1,1,1,5,0,0,0 24 | Lopburi Province,0,8,94,90,0,0,7,0,2,7,7,0,0,1,0,2,1,2,0,1,3,0,0,0,1,0,0,15,0,0,15,0,5,1,16,0,2,2,2,0,1,0,3,0,10,0,0,47,0,0,0,1,0,2,49,0,0,2,0,2,0,6,7,123,1,1,1,0,1,0,0,0,0,2,3,0,0 25 | Mukdahan,2,0,1,9,0,0,0,0,0,0,0,0,1,0,0,7,0,1,9,1,0,0,0,0,3,0,0,0,0,0,4,44,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,7,0,0,0,0,0,0,0,0,6,0,0,1,0,2,0,0,1,0,0,15,1,0,0,0,11 26 | Maha Sarakham,1,0,13,52,0,25,3,1,9,0,3,0,2,2,0,517,0,1,293,2,1,0,1,3,0,1,1,5,0,2,75,7,0,1,0,0,1,7,1,7,1,0,3,0,11,0,4,8,0,0,0,210,0,2,1,0,1,0,1,0,1,0,6,7,6,5,1,0,0,0,0,7,18,2,0,0,16 27 | Mae Hong Son,0,0,0,18,0,0,1,0,107,1,0,0,6,0,2,0,1,0,0,0,2,1,0,1,1,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,0,1,0,1,0,1,0,0,0,0,0,2,0,0,2,0,0,0,1,0,0,0,0,0,0,1,0,1,0 28 | Nan,0,0,0,41,0,0,2,1,9,1,0,0,1,0,1,1,1,0,0,2,3,0,1,0,0,0,0,3,0,0,0,0,1,0,4,0,2,0,2,0,0,0,5,0,1,54,1,2,0,16,0,0,0,1,2,0,0,0,0,1,1,0,2,0,0,0,2,0,0,0,0,0,1,10,0,0,0 29 | Nonthaburi,0,20,186,8030,0,2,120,44,17,10,2,1,10,9,1,11,2,24,1,4,6,0,17,0,1,1,2,0,0,1,57,0,474,1,16,1,27,58,3,23,2,0,6,0,5,1,13,1590,0,0,37,1,0,24,16,5,38,77,2,2,1,79,407,49,0,1,1,0,0,1,7,5,4,3,5,0,1 30 | Nong Bua Lam Phu,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,13,0,0,0,7,1,0,0,0,0,0,1,0,0,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,38,0,0,0,0 31 | Nong Khai,0,0,3,21,17,0,3,1,2,0,2,0,2,0,0,40,0,0,2,11,0,0,0,0,5,0,0,1,6,0,13,2,1,0,0,0,0,1,0,1,0,0,1,0,5,0,0,3,0,0,2,1,0,0,0,1,0,0,0,1,3,0,4,3,0,0,0,0,1,0,0,0,594,0,0,0,2 32 | Nakhon Ratchasima,2,1,225,464,0,136,36,29,10,2,79,0,2,9,0,157,0,8,10,6,2,0,23,1,52,1,2,74,3,6,0,2,18,2,12,0,145,10,5,7,3,0,7,1,17,1,122,141,0,2,6,18,0,12,5,1,3,5,7,2,4,7,39,371,32,11,0,1,0,0,1,12,15,1,2,0,3 33 | Nakhon Phanom,5,1,1,24,4,0,2,0,2,0,0,0,0,1,0,6,0,0,6,1,0,0,0,36,9,0,1,0,0,1,6,0,0,0,0,0,0,0,2,0,0,0,0,1,1,0,0,3,0,0,0,3,1,0,1,0,0,0,0,0,44,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,2 34 | Nakhon Pathom,0,5,45,2229,0,1,34,16,14,4,2,3,3,4,1,5,4,148,0,0,0,0,5,0,1,0,1,491,0,1,18,1,0,0,6,0,1,77,0,42,0,0,7,0,3,1,4,145,0,1,338,1,0,4,3,4,57,275,2,2,0,83,125,13,0,0,2,0,0,0,1,0,9,1,2,1,0 35 | Nakhon Si Thammarat,0,0,4,48,0,0,6,0,1,0,0,3,0,0,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,11,4,24,0,4,0,0,0,1,0,0,1,0,0,0,0,29,0,0,0,55,0,1,7,1,0,0,0,3,0,17,0,0,1,0,0,1,0 36 | Nakhon Sawan,0,13,89,114,0,0,12,5,12,75,5,2,3,0,2,2,78,1,0,2,21,4,17,0,1,0,3,15,0,0,4,0,6,0,0,0,2,10,70,3,1,0,77,0,10,13,0,45,1,4,2,0,0,2,85,1,1,1,0,0,0,29,14,4,0,0,5,0,27,0,0,0,0,11,57,0,0 37 | Narathiwat,0,0,0,12,0,1,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,15,0,0,0,0,0,0,4,0,0,0,1,0,0,3,0,0,0,0,1,0,0,0,0,0,0,0,8,0 38 | Nakhon Nayok,0,1,30,273,0,2,14,14,3,0,1,0,2,2,0,2,0,1,1,1,0,0,2,0,0,0,0,30,0,1,113,0,16,0,4,0,0,2,0,1,1,0,1,0,0,0,69,299,0,0,8,0,0,5,2,0,2,2,2,2,0,1,41,36,0,0,0,0,0,0,1,0,0,0,0,0,0 39 | Phetchaburi,1,3,14,600,0,1,23,8,8,1,2,5,1,2,0,1,0,34,0,0,3,0,2,1,8,1,1,71,0,2,19,0,110,3,5,0,2,0,1,1433,1,1,0,0,1,1,1,56,1,0,208,1,2,2,5,0,222,312,1,3,0,15,57,6,0,0,0,1,1,0,6,2,2,1,0,0,0 40 | Phichit,0,1,11,21,0,0,0,2,2,7,1,0,0,0,0,0,4,1,0,1,0,0,6,0,0,0,1,3,0,0,1,0,0,0,65,0,0,1,0,0,0,0,90,0,11,4,0,6,0,1,0,0,0,0,13,0,0,1,1,0,0,1,1,0,1,0,2,0,1,0,0,2,1,6,2,0,0 41 | Prachuap Khiri Khan,0,0,7,327,0,2,14,5,6,0,1,42,2,1,2,6,0,8,0,1,1,0,0,0,4,1,0,42,0,1,9,0,55,7,4,0,1,1717,1,0,1,2,1,1,7,0,1,30,0,2,63,0,0,1,1,1,83,167,0,13,1,6,45,2,0,0,0,0,1,1,1,3,1,1,0,0,0 42 | Phuket,0,0,9,159,0,0,4,0,14,0,0,3,1,1,288,3,1,2,0,0,0,0,0,0,0,0,0,4,0,0,4,0,1,7,0,0,1,0,0,7,0,4,2,329,15,0,0,2,0,0,4,0,1,3,0,24,1,2,0,36,0,0,107,0,0,0,0,1,0,9,1,1,5,0,0,2,0 43 | Phatthalung,0,0,4,8,0,0,0,0,0,0,0,1,0,0,7,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,15,0,2,0,0,0,2,0,0,0,3,1,0,0,0,1,0,0,0,0,0,0,51,0,1,0,3,0,0,1,0,0,0,0,1,0,31,0,0,0,0,0,0,0 44 | Phitsanulok,0,2,28,79,0,0,3,1,19,12,1,0,8,2,0,8,20,2,2,26,14,3,5,0,1,1,3,11,1,1,6,2,1,0,79,0,0,2,80,2,0,0,0,0,79,49,0,15,0,9,1,0,0,1,19,2,1,1,1,1,0,4,1,3,0,0,62,0,9,0,0,0,0,89,4,0,2 45 | Phang Nga,0,0,6,24,0,0,0,0,3,0,0,5,0,0,79,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,1,0,4,275,1,0,0,2,0,1,3,0,1,2,0,7,0,0,8,0,1,0,17,0,0,4,0,0,0,0,3,0,8,0,0,2,0,0,0,0 46 | Phetchabun,0,0,19,93,0,0,10,2,6,1,9,0,2,2,4,34,0,0,3,40,5,1,38,1,2,1,2,12,0,2,9,0,2,2,9,0,0,1,15,2,9,0,104,2,0,8,1,8,0,2,2,1,0,1,2,2,1,1,2,1,0,6,4,21,1,0,5,0,1,1,1,3,3,12,1,0,2 47 | Phrae,0,1,3,21,0,0,1,0,33,2,0,0,12,0,1,1,1,0,0,1,98,10,1,0,0,1,26,3,0,0,0,0,1,0,10,0,1,1,4,3,0,0,51,0,7,0,0,2,0,44,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,8,0,2,0,0,1,0,67,1,0,0 48 | Prachinburi,0,2,7,66,0,2,20,67,0,0,0,1,0,12,0,3,0,0,0,0,0,0,0,0,1,0,0,7,1,0,52,0,2,0,0,0,82,1,0,1,0,0,0,0,1,0,0,17,0,0,2,1,0,6,0,0,2,2,18,1,1,0,15,3,2,0,0,0,0,0,0,0,0,0,0,0,0 49 | Pathum Thani,0,40,740,6549,0,6,144,52,30,25,2,2,14,11,2,18,14,34,0,2,14,2,31,0,5,1,1,1707,0,5,122,0,129,1,45,0,176,39,4,22,3,2,9,2,8,4,15,0,0,2,26,1,0,23,34,4,33,36,2,4,3,40,376,133,2,5,5,1,3,1,2,11,12,2,8,0,1 50 | Pattani,0,0,0,5,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,10,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,21,0 51 | Phayao,0,0,2,15,0,0,4,0,30,1,0,1,144,0,0,1,3,0,0,2,48,2,0,0,0,0,13,0,0,1,0,0,0,0,3,0,0,1,2,0,0,0,10,0,2,38,0,2,0,0,1,0,0,1,2,0,0,0,0,0,0,1,1,2,0,0,1,0,5,0,0,0,0,13,0,0,0 52 | Ratchaburi,0,3,16,518,0,0,20,4,15,2,0,0,3,4,0,0,1,145,0,1,1,1,1,0,0,0,1,49,0,1,8,0,481,0,3,0,7,229,0,57,0,0,1,1,3,1,0,25,0,0,0,1,0,6,0,1,324,93,0,2,1,15,32,4,1,0,1,0,1,0,1,0,1,0,1,0,0 53 | Roi Et,4,0,1,35,1,8,3,0,1,0,2,0,0,0,0,71,0,4,38,5,0,0,0,7,169,0,0,2,0,1,45,3,1,0,0,0,0,2,0,1,0,0,0,0,0,0,1,3,0,0,0,0,0,0,0,1,0,0,2,0,3,0,0,1,8,8,0,0,0,0,0,8,5,0,0,0,29 54 | Ranong,0,0,2,9,0,0,2,0,1,0,0,8,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,6,1,0,0,3,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 55 | Rayong,0,1,10,290,0,1,560,167,7,6,0,0,5,287,0,6,3,1,0,1,7,0,1,0,0,0,0,22,0,0,22,0,9,0,5,1,8,4,1,2,1,0,1,0,5,0,19,30,0,0,4,1,0,0,1,0,1,4,6,0,0,1,61,3,2,4,0,0,1,0,22,0,4,3,0,0,0 56 | Sing Buri,0,60,108,53,0,0,10,3,1,30,0,0,0,0,0,1,12,0,0,0,4,0,35,0,0,0,0,21,0,0,2,0,4,0,52,0,1,3,6,1,0,0,8,0,0,1,0,31,0,0,0,0,0,0,0,0,1,1,0,0,0,11,7,8,0,0,1,0,3,0,0,0,0,2,8,0,0 57 | Songkhla,0,0,1,136,0,0,4,1,5,1,0,4,4,0,23,1,0,0,0,3,0,0,1,0,2,0,0,5,0,0,0,0,3,41,0,14,1,3,0,7,29,68,0,8,4,0,0,1,47,0,1,0,1,1,0,0,1,0,0,12,0,0,35,0,0,0,0,33,0,32,0,0,2,0,0,13,0 58 | Samut Songkhram,0,1,2,216,0,0,13,3,1,1,0,1,1,0,0,1,0,10,0,1,0,0,1,0,2,0,0,44,0,0,3,0,51,1,1,0,2,187,0,67,1,0,1,0,1,0,1,24,0,0,231,0,0,0,0,2,0,221,0,0,1,1,42,1,0,0,0,0,1,0,0,0,0,0,0,0,0 59 | Samut Sakhon,0,4,12,941,0,0,20,6,1,0,0,0,1,3,0,2,1,10,1,0,2,0,2,0,0,0,0,70,0,0,8,0,225,0,1,0,2,78,0,19,0,0,1,1,0,0,1,42,0,0,47,1,1,6,2,1,97,0,0,0,1,6,99,4,1,0,0,0,0,0,1,0,0,0,2,0,0 60 | Sa Kaeo,0,0,2,33,0,14,6,34,0,0,0,0,0,23,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,3,0,0,1,0,0,3,0,1,0,0,0,0,0,2,0,30,2,0,0,1,1,0,3,0,1,0,1,0,0,0,0,7,3,0,2,0,0,0,0,2,0,0,0,0,0,0 61 | Surat Thani,0,0,2,132,0,1,6,2,16,0,0,49,0,0,32,1,0,4,0,0,0,0,0,0,0,1,0,4,0,0,0,0,1,60,0,0,1,5,0,18,31,4,0,18,4,0,2,3,0,0,3,0,2,4,0,13,0,3,0,0,0,1,40,0,0,0,0,2,0,1,1,1,0,0,0,0,0 62 | Sakon Nakhon,1,0,0,16,7,0,1,0,0,0,0,0,1,0,0,15,0,0,15,8,0,0,0,5,12,1,0,1,2,2,4,38,0,0,0,0,0,2,0,2,0,0,0,0,0,0,1,2,0,0,0,1,0,0,0,0,1,0,1,0,0,0,2,1,0,1,0,0,0,0,0,1,36,0,0,0,4 63 | Suphan Buri,0,59,69,149,0,0,4,2,4,25,0,0,2,1,0,1,3,47,0,1,3,0,6,0,1,1,0,145,0,0,6,0,73,0,14,0,2,11,0,5,0,0,6,0,3,1,0,41,0,0,13,0,0,3,11,0,2,8,0,0,0,0,15,6,0,0,0,0,1,0,0,0,0,2,10,0,0 64 | Samut Prakan,0,4,105,11178,0,5,447,244,53,15,1,0,22,21,5,36,2,14,1,1,7,1,13,0,2,1,1,429,0,3,31,0,117,11,14,0,38,54,0,36,28,0,2,2,10,1,11,399,0,0,30,2,0,51,5,20,33,92,7,10,0,15,0,45,2,3,4,0,2,0,1,14,12,1,2,0,0 65 | Saraburi,0,9,247,283,0,6,11,12,1,3,6,0,0,2,0,7,3,2,0,2,2,0,98,0,1,0,0,43,0,1,202,1,8,2,8,0,44,7,2,0,0,0,2,0,14,0,7,122,0,0,2,1,0,4,5,0,4,4,1,0,0,2,22,0,2,1,0,1,1,0,1,0,1,0,1,0,0 66 | Surin,0,0,5,17,0,58,6,0,1,1,2,0,6,1,0,5,0,0,0,0,0,0,0,1,2,0,0,1,0,1,31,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,2,3,0,0,0,8,0,0,0,0,0,0,2,1,0,0,4,3,0,24,0,0,0,0,0,9,1,0,0,0,1 67 | Sisaket,1,0,2,27,1,16,2,3,6,0,2,0,0,1,1,2,0,0,2,1,0,0,0,3,6,0,0,1,0,0,14,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,10,0,0,0,6,0,3,0,0,0,0,2,0,0,0,3,2,43,0,0,0,0,0,0,166,0,0,0,0,11 68 | Sukhothai,0,2,7,18,1,1,0,0,8,2,1,0,3,1,0,1,16,2,0,0,22,1,3,0,1,2,1,3,1,0,1,0,3,0,14,0,0,0,1,0,0,0,93,0,3,8,0,3,0,3,1,1,0,0,6,0,0,0,0,0,0,1,4,0,0,0,0,0,14,0,0,0,0,14,1,0,0 69 | Satun,0,0,1,19,0,0,4,0,3,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,2,0,1,0,0,0,3,0,4,3,0,0,1,2,0,1,0,0,0,0,79,1,0,0,3,0,0,2,1,0,0,0,0,1,5,1,0,0,0,0,1,0 70 | Tak,0,1,6,28,0,1,1,0,20,2,0,0,2,2,0,1,63,0,0,1,47,10,1,0,0,2,1,2,0,0,0,0,1,0,26,0,0,1,0,1,0,0,12,0,2,3,0,7,0,1,1,0,0,0,12,0,0,0,0,0,2,5,2,2,1,0,14,0,0,0,0,2,1,0,1,0,0 71 | Trang,0,0,21,31,0,0,0,0,2,0,0,14,2,0,41,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,13,0,1,0,2,0,2,4,23,0,4,0,0,0,1,1,0,0,0,0,0,0,25,0,0,0,4,1,0,0,0,0,0,0,3,0,0,0,1,0,0,0,1,0 72 | Trat,0,0,0,67,0,0,30,19,5,0,0,0,1,114,0,1,0,1,0,1,0,0,1,0,0,0,0,7,0,0,2,0,3,0,0,0,1,4,0,1,1,0,0,0,1,0,0,2,0,0,0,0,0,40,0,1,0,0,7,0,0,0,12,2,0,1,0,0,0,0,0,1,1,0,0,0,0 73 | Ubon Ratchathani,27,0,8,175,0,23,4,1,5,0,0,1,1,1,3,13,0,0,0,1,1,0,0,24,19,0,0,1,0,1,34,7,1,0,0,0,1,2,0,0,0,0,3,0,0,0,3,7,0,0,1,30,0,1,0,2,0,0,1,0,1,0,35,5,20,165,0,0,1,1,1,0,1,0,1,0,44 74 | Udon Thani,0,0,1,112,8,1,3,0,8,1,11,0,0,0,0,205,0,1,12,25,1,1,2,0,22,0,1,2,48,281,29,7,5,0,0,0,0,3,0,2,1,0,7,0,8,2,0,5,0,0,2,1,0,3,0,2,0,0,0,1,32,0,26,1,0,0,0,0,0,0,0,5,0,1,0,0,0 75 | Uttaradit,0,2,6,10,0,1,2,0,7,0,0,0,0,0,0,2,2,1,0,2,18,5,4,0,0,0,5,3,0,1,0,0,1,0,7,0,0,0,9,0,0,0,67,0,6,70,0,2,0,5,0,0,0,3,11,0,1,0,0,0,0,1,1,1,0,0,13,1,2,0,0,1,1,0,0,0,0 76 | Uthai Thani,0,5,15,12,0,0,2,0,0,31,1,0,0,0,0,0,2,1,0,0,0,2,2,0,0,0,0,3,0,0,1,0,1,0,46,0,0,0,0,0,0,0,1,0,1,0,0,4,0,0,2,0,0,2,17,0,1,1,0,0,0,12,2,0,2,0,0,0,2,0,0,0,1,0,0,0,0 77 | Yala,0,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,9,0,0,0,1,1,1,0,0,0,0,0,0,24,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0 78 | Yasothon,12,0,1,4,0,2,0,0,0,0,1,0,0,0,0,5,0,1,1,0,0,0,0,7,10,0,0,1,0,0,7,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,3,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,2,2,1,0,0,0,0,0,21,1,0,0,0,0 79 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_TwoWay_3Days.csv: -------------------------------------------------------------------------------- 1 | ,Amnat Charoen,Ang Thong,Phra Nakhon Si Ayutthaya,Bangkok,Bueng Kan,Buriram,Chonburi,Chachoengsao,Chiang Mai,Chai Nat,Chaiyaphum,Chumphon,Chiang Rai,Chanthaburi,Krabi,Khon Kaen,Kamphaeng Phet,Kanchanaburi,Kalasin,Loei Province,Lampang,Lamphun,Lopburi Province,Mukdahan,Maha Sarakham,Mae Hong Son,Nan,Nonthaburi,Nong Bua Lam Phu,Nong Khai,Nakhon Ratchasima,Nakhon Phanom,Nakhon Pathom,Nakhon Si Thammarat,Nakhon Sawan,Narathiwat,Nakhon Nayok,Phetchaburi,Phichit,Prachuap Khiri Khan,Phuket,Phatthalung,Phitsanulok,Phang Nga,Phetchabun,Phrae,Prachinburi,Pathum Thani,Pattani,Phayao,Ratchaburi,Roi Et,Ranong,Rayong,Sing Buri,Songkhla,Samut Songkhram,Samut Sakhon,Sa Kaeo,Surat Thani,Sakon Nakhon,Suphan Buri,Samut Prakan,Saraburi,Surin,Sisaket,Sukhothai,Satun,Tak,Trang,Trat,Ubon Ratchathani,Udon Thani,Uttaradit,Uthai Thani,Yala,Yasothon 2 | Amnat Charoen,0,0,0,9,0,2,0,0,1,0,0,0,0,0,0,3,0,0,1,1,0,0,0,6,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,2,0,1,0,0,0,0,0,0,2,0,0,1,0,5,0,0,0,0,0,45,0,0,0,0,6 3 | Ang Thong,0,0,206,93,0,0,7,3,4,3,0,0,2,0,1,1,1,2,0,0,1,0,13,0,0,0,0,37,0,0,4,0,17,0,11,0,1,1,1,4,0,0,2,0,2,1,0,48,0,0,1,0,0,3,60,0,1,4,0,0,0,31,11,11,0,0,0,0,1,0,0,0,0,3,7,0,0 4 | Phra Nakhon Si Ayutthaya,0,254,0,1901,1,3,177,36,31,31,5,14,6,21,8,8,16,33,5,0,10,2,98,2,9,1,3,304,0,2,148,0,107,3,76,1,43,30,11,32,7,1,22,7,15,7,11,1310,0,0,17,3,1,32,107,3,31,30,4,6,1,142,151,305,6,1,13,1,5,24,2,4,2,8,16,0,1 5 | Bangkok,5,167,2383,0,3,113,5097,1475,1078,88,59,69,358,447,175,405,80,909,21,89,165,31,316,15,88,55,89,17796,5,40,1169,41,5252,92,309,15,840,1558,59,1145,306,14,204,57,266,45,203,13558,22,22,1127,67,17,881,200,254,724,1746,114,221,25,534,20555,744,44,50,51,30,65,49,139,228,237,30,50,12,18 6 | Bueng Kan,0,0,0,4,0,0,0,0,0,0,1,0,0,0,0,4,0,0,2,0,0,0,0,0,0,0,0,1,0,29,3,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,0,0,0,22,0,0,0,0 7 | Buriram,2,1,13,88,0,0,15,5,12,0,8,0,1,12,0,30,0,2,3,0,3,0,1,2,41,0,0,10,0,2,193,0,2,1,0,2,3,0,0,2,0,0,1,1,5,1,6,11,0,1,1,12,0,2,1,0,1,2,14,1,1,2,7,14,83,14,3,1,0,0,2,18,1,0,0,0,6 8 | Chonburi,0,13,169,3942,0,25,0,912,64,21,5,2,21,211,8,36,4,61,4,11,17,4,18,1,11,8,4,285,0,6,131,2,110,4,34,0,32,60,2,30,12,0,15,4,40,4,67,423,0,5,37,8,2,780,15,6,27,39,11,10,1,25,989,32,8,4,5,4,3,1,29,19,17,3,3,1,0 9 | Chachoengsao,0,2,37,1014,0,4,518,0,5,0,1,0,0,52,0,6,0,10,1,0,1,1,3,0,2,0,1,100,0,1,33,0,25,0,2,0,29,11,2,5,0,0,3,0,3,0,58,111,0,0,7,0,0,102,3,1,7,13,36,2,0,6,298,13,2,1,0,0,2,1,6,2,3,1,1,0,0 10 | Chiang Mai,0,3,52,1298,0,13,67,10,0,4,6,3,781,9,34,27,68,13,0,7,775,1315,14,1,13,188,31,65,0,4,24,3,29,4,57,2,7,19,6,21,27,1,44,9,30,102,6,84,3,81,26,4,0,20,11,8,6,4,1,19,3,11,267,7,3,8,54,5,82,2,7,13,27,29,5,1,1 11 | Chai Nat,0,10,35,51,0,0,9,1,1,0,1,0,1,1,0,0,8,4,0,0,3,0,11,0,0,0,1,9,0,0,2,0,5,0,79,0,0,4,7,1,0,0,15,0,1,0,0,20,0,0,1,0,0,6,48,0,0,3,0,0,0,32,16,4,0,0,0,0,4,0,0,0,0,3,32,1,0 12 | Chaiyaphum,0,0,8,54,0,5,7,0,6,0,0,0,2,2,0,80,1,2,1,8,2,1,12,1,8,0,0,0,1,4,109,2,1,0,3,0,1,2,1,0,0,0,4,1,20,0,0,6,0,0,0,2,0,1,1,0,0,0,1,1,1,1,1,15,3,2,0,0,0,0,0,2,8,0,0,0,0 13 | Chumphon,0,0,7,51,0,0,2,0,1,0,0,0,1,0,6,0,0,0,0,0,0,0,0,0,1,0,0,5,0,0,1,0,3,14,1,0,1,13,1,82,3,4,0,8,1,0,1,0,2,0,1,0,16,0,0,8,6,4,0,53,0,0,1,0,0,0,0,0,0,17,1,0,0,1,0,0,0 14 | Chiang Rai,0,2,18,545,0,0,25,3,846,2,0,2,0,2,5,10,4,5,0,4,100,24,0,0,1,17,23,24,0,2,7,0,4,2,16,0,1,10,9,9,7,0,41,4,7,54,3,24,0,388,5,2,0,10,3,3,0,1,0,2,1,6,114,2,6,0,11,0,2,0,2,2,3,21,1,0,0 15 | Chanthaburi,0,1,13,287,0,6,187,109,9,0,0,0,1,0,1,4,1,4,1,1,3,2,4,0,3,0,0,39,0,0,12,0,14,0,2,0,5,7,0,1,1,0,1,0,1,0,11,24,0,0,8,2,2,297,0,2,1,13,29,0,2,1,55,8,2,4,1,0,2,0,160,1,3,1,1,0,0 16 | Krabi,0,0,14,241,0,0,6,3,64,0,1,3,6,0,0,1,0,4,0,1,1,0,2,0,1,1,0,3,0,0,0,0,4,21,3,6,0,6,0,4,563,21,1,145,9,3,0,2,1,0,6,0,1,2,0,133,4,2,1,90,0,0,26,0,0,0,1,21,0,110,1,0,1,0,0,0,0 17 | Khon Kaen,4,1,24,397,6,43,38,10,37,0,109,1,5,8,1,0,2,7,196,96,5,5,5,21,578,1,0,20,33,93,346,20,13,0,3,0,17,3,2,13,3,0,14,3,70,2,10,43,0,3,3,144,0,18,2,1,3,3,1,3,29,4,56,24,11,21,1,0,2,1,3,69,399,4,0,1,16 18 | Kamphaeng Phet,0,2,21,68,0,1,6,0,25,6,0,0,2,0,1,2,0,3,0,0,35,5,4,1,0,2,3,3,0,1,3,0,4,0,105,0,0,2,6,2,0,0,57,0,5,3,0,8,0,3,1,0,0,3,13,0,1,0,0,0,0,6,6,4,1,0,17,0,52,0,1,1,0,2,3,0,0 19 | Kanchanaburi,0,2,30,618,0,1,58,6,15,2,0,0,2,5,3,9,2,0,0,3,2,1,5,0,2,1,3,107,1,0,16,0,314,0,8,1,6,51,1,25,4,0,3,0,2,1,1,73,0,0,248,3,1,8,0,2,16,21,1,6,0,90,47,3,3,0,0,0,3,2,3,1,1,1,1,0,0 20 | Kalasin,0,0,2,9,0,1,4,2,0,0,1,0,0,0,0,136,0,1,0,3,0,0,1,11,355,1,0,0,0,2,16,12,1,0,0,0,1,0,0,0,0,0,0,0,3,0,1,4,0,0,0,57,0,1,0,0,3,0,0,0,11,1,2,3,0,1,0,0,0,0,0,3,21,0,0,0,4 21 | Loei Province,0,0,0,76,1,1,8,1,2,0,4,0,2,1,0,77,1,4,2,0,4,0,4,4,12,0,1,6,20,23,16,0,1,0,2,0,2,0,2,0,4,1,44,2,85,2,3,6,0,2,0,3,0,5,0,3,0,0,0,1,10,1,1,8,1,1,1,0,2,0,1,5,49,5,0,0,0 22 | Lampang,0,2,8,228,0,2,25,2,740,6,0,0,65,0,1,7,61,1,0,3,0,160,1,0,1,3,11,14,0,1,7,0,0,0,52,0,0,8,3,2,0,1,24,0,7,112,1,22,0,79,3,0,0,6,7,0,3,0,1,1,0,9,34,2,0,0,37,0,95,0,0,2,6,25,2,0,0 23 | Lamphun,0,0,5,29,0,0,2,1,830,0,0,0,18,2,0,3,6,0,0,2,137,0,1,0,1,3,2,1,0,0,1,0,2,0,4,0,0,1,0,2,1,0,6,0,1,6,0,1,0,3,1,0,0,1,0,0,1,0,0,1,1,0,1,0,0,0,0,1,8,0,1,1,1,5,0,0,0 24 | Lopburi Province,0,9,118,208,0,0,20,1,4,10,9,0,1,1,0,9,1,4,1,2,4,0,0,0,1,0,2,26,0,0,25,0,13,1,21,0,6,2,4,1,1,0,5,0,30,1,0,72,0,0,0,1,0,5,56,2,1,3,1,2,0,9,15,165,1,1,1,0,2,0,0,1,1,2,3,0,0 25 | Mukdahan,4,0,1,20,0,1,2,3,1,0,0,0,1,0,0,11,0,3,11,1,0,1,0,0,8,0,0,0,0,1,6,61,1,0,0,0,0,1,0,1,0,0,1,0,0,0,2,3,0,0,0,10,0,0,0,0,0,0,0,0,7,0,0,1,0,3,0,0,1,0,0,22,2,0,0,0,15 26 | Maha Sarakham,2,0,19,105,0,58,13,2,14,0,9,1,4,7,0,926,1,3,462,17,3,0,2,15,0,2,3,11,4,15,131,13,2,1,1,0,3,15,1,12,1,0,4,0,15,0,8,18,0,2,0,361,0,10,1,1,3,0,3,1,6,3,15,9,10,12,2,0,0,0,0,44,51,2,0,0,35 27 | Mae Hong Son,0,0,0,39,0,0,4,0,199,1,0,0,9,0,2,1,1,1,0,0,3,1,0,1,1,0,0,1,0,0,0,0,5,0,0,0,0,1,0,0,0,0,1,0,1,0,0,4,0,2,0,1,0,1,0,0,0,0,0,3,0,0,3,0,0,0,1,0,0,0,0,0,0,4,0,1,0 28 | Nan,0,0,2,79,0,2,4,3,23,1,0,0,12,0,1,2,2,1,1,4,9,1,1,0,0,0,0,3,0,0,1,0,2,0,6,0,2,0,2,0,1,1,10,0,2,72,2,3,0,22,1,0,0,2,3,0,0,2,0,1,1,2,3,0,0,0,3,0,1,0,0,0,1,13,0,0,0 29 | Nonthaburi,0,34,289,13348,3,10,306,73,52,22,8,2,22,33,4,24,2,82,1,9,14,0,36,2,4,1,3,0,2,1,125,2,721,4,25,1,64,132,9,80,9,1,17,2,17,5,19,2490,1,1,83,2,2,48,32,11,66,107,6,9,2,143,648,74,1,4,3,1,1,1,16,12,10,5,10,0,3 30 | Nong Bua Lam Phu,0,0,0,3,0,0,0,0,0,0,2,0,0,0,0,25,0,0,0,16,1,0,0,0,4,0,1,1,0,7,1,2,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,1,0,1,0,2,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,65,0,0,0,0 31 | Nong Khai,0,0,8,54,32,1,9,1,5,0,4,0,3,0,0,88,0,1,3,40,3,0,0,1,18,0,0,1,12,0,25,3,3,0,0,0,0,1,0,1,0,0,1,0,5,1,1,12,0,0,2,1,0,1,0,1,0,0,1,1,9,0,6,5,1,1,0,0,1,0,0,0,858,0,0,0,2 32 | Nakhon Ratchasima,2,2,280,924,0,235,124,39,24,5,147,1,3,31,2,293,1,22,16,20,4,0,37,5,93,1,2,137,5,16,0,8,37,3,15,0,165,22,6,25,6,0,15,1,29,1,141,262,0,2,12,36,0,37,11,5,4,11,11,4,6,15,87,452,56,22,2,1,2,0,9,31,33,1,3,0,6 33 | Nakhon Phanom,7,1,1,41,8,0,3,0,2,0,1,0,0,1,0,15,0,0,10,1,0,0,0,49,13,0,1,0,1,3,12,0,0,0,0,0,0,0,2,0,0,0,0,1,2,0,0,5,0,0,0,5,2,0,1,0,0,0,0,0,77,0,0,1,1,4,0,0,0,0,0,8,7,0,0,0,2 34 | Nakhon Pathom,0,10,89,4461,1,6,126,24,33,7,2,3,8,13,3,18,8,304,0,2,3,2,11,0,2,2,1,751,0,2,47,1,0,1,16,0,19,177,0,115,3,0,13,0,6,2,8,274,0,3,555,4,0,19,6,6,91,364,3,4,1,149,232,24,1,0,4,1,0,2,3,2,13,1,6,1,0 35 | Nakhon Si Thammarat,0,0,4,93,0,0,9,0,3,0,0,7,1,1,17,1,0,0,0,0,0,1,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,3,0,13,14,36,0,5,0,0,0,2,1,0,3,0,3,0,0,62,1,1,0,104,0,1,10,1,0,0,0,4,0,29,0,0,1,0,0,2,0 36 | Nakhon Sawan,0,14,103,264,0,1,32,8,31,101,7,3,8,1,2,4,101,3,0,2,33,5,25,0,1,0,5,33,0,0,7,0,21,0,0,0,5,16,116,6,2,0,111,0,20,18,1,75,1,5,2,0,0,7,91,1,1,1,2,0,0,38,28,8,1,0,15,0,33,0,0,2,0,15,92,0,0 37 | Narathiwat,0,0,0,21,0,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,2,25,0,0,0,0,0,0,22,0,0,0,3,0,0,3,0,0,0,0,1,0,0,1,0,0,0,0,14,0 38 | Nakhon Nayok,0,3,46,633,0,2,30,23,5,2,1,0,2,5,0,7,0,9,1,3,0,0,7,0,1,0,0,66,0,2,151,0,26,0,6,0,0,10,0,7,1,0,1,0,3,0,81,422,0,0,17,0,0,11,3,1,3,4,6,4,0,7,72,50,0,0,0,0,0,0,3,2,1,1,1,0,0 39 | Phetchaburi,1,4,28,1211,0,1,44,17,13,1,3,9,7,7,2,1,0,68,0,0,8,0,7,1,11,1,1,140,0,4,26,0,192,7,11,0,8,0,2,2152,2,1,3,0,4,2,1,120,2,0,302,1,3,4,6,3,264,348,2,8,0,23,99,7,0,1,0,1,3,0,7,5,4,3,0,0,0 40 | Phichit,0,2,13,42,0,0,2,2,5,9,1,0,1,0,0,1,6,1,0,2,2,0,8,0,0,0,1,3,0,0,1,0,0,0,93,0,0,1,0,0,0,0,143,0,15,5,0,8,0,1,0,0,0,0,15,0,0,1,1,0,0,1,4,0,1,0,7,0,1,0,0,3,1,8,3,0,0 41 | Prachuap Khiri Khan,0,1,29,658,0,2,31,5,11,3,2,63,5,4,5,9,0,23,0,1,5,0,2,0,6,1,0,78,0,1,20,0,98,11,8,1,4,2136,2,0,6,3,5,1,7,3,2,57,0,3,101,1,2,8,2,4,104,185,1,24,1,11,79,6,0,2,0,1,2,2,1,5,3,1,0,0,0 42 | Phuket,0,0,14,338,0,0,10,0,34,0,0,6,5,1,492,4,1,2,0,2,0,0,0,0,1,1,0,10,0,1,6,0,4,14,1,2,1,3,0,12,0,6,4,527,17,0,0,6,1,0,5,0,4,3,0,45,2,2,0,81,0,0,128,0,0,0,1,1,0,12,3,1,6,0,1,3,0 43 | Phatthalung,0,0,5,14,0,0,0,0,0,0,0,1,0,0,21,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,22,0,3,0,1,0,4,1,0,0,3,1,0,0,0,2,0,0,0,0,0,0,92,0,1,0,7,0,0,3,0,0,0,0,3,0,41,0,0,0,0,0,0,0 44 | Phitsanulok,0,4,34,168,0,1,12,3,49,13,2,2,23,3,0,14,51,7,2,38,25,4,7,0,2,1,10,18,1,1,10,2,6,0,108,0,4,4,116,5,2,0,0,0,135,66,1,23,0,12,3,0,0,4,19,2,2,1,2,1,0,7,9,4,0,0,120,0,21,0,2,2,1,115,6,0,2 45 | Phang Nga,0,0,6,45,0,0,4,0,8,0,0,8,0,0,144,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,2,0,1,9,0,0,0,1,0,5,504,1,0,0,3,0,1,4,1,1,5,0,10,0,0,8,1,1,0,30,0,0,7,1,1,0,0,7,2,10,0,0,2,0,0,0,0 46 | Phetchabun,0,0,28,198,0,2,22,3,17,1,12,0,5,2,8,55,1,2,3,73,7,2,44,1,5,2,4,16,1,6,21,0,9,3,21,0,1,2,22,7,18,0,140,3,0,9,2,22,0,5,3,3,0,2,4,5,1,1,4,4,0,7,14,29,1,1,10,1,3,2,3,5,4,13,1,0,3 47 | Phrae,0,1,5,43,0,0,3,0,98,3,0,0,47,0,1,1,1,0,0,3,123,12,1,0,0,3,56,5,0,1,1,0,3,0,14,0,2,2,5,3,1,0,60,0,7,0,0,7,0,48,1,0,0,0,5,0,0,0,0,0,0,0,4,0,0,0,12,0,6,0,1,1,0,83,1,0,0 48 | Prachinburi,0,2,8,140,0,7,64,78,0,1,0,1,0,19,0,6,0,0,0,2,0,1,0,0,2,0,0,13,1,1,75,0,3,0,0,0,99,1,0,2,0,0,0,0,1,0,0,29,0,0,2,1,0,23,0,1,2,3,37,2,1,1,27,9,3,0,0,0,0,0,4,1,0,0,0,0,0 49 | Pathum Thani,1,56,1165,11668,1,16,388,99,70,35,12,5,27,43,4,48,21,77,2,6,28,2,68,1,17,3,4,2604,1,6,250,4,256,6,73,0,306,102,11,71,8,2,25,2,30,8,31,0,1,6,65,5,0,76,55,14,61,57,8,8,5,82,663,213,5,10,11,1,7,2,10,14,20,5,22,0,2 50 | Pattani,0,0,0,12,0,0,1,0,3,0,0,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,2,0,19,0,0,0,1,2,4,0,1,0,0,0,0,0,0,0,0,0,0,0,88,0,1,0,3,0,0,1,0,0,0,0,0,0,3,0,0,0,0,0,28,0 51 | Phayao,0,2,5,34,0,1,9,1,78,2,2,1,269,0,0,2,4,1,0,4,82,4,1,0,0,2,18,1,0,2,0,0,1,0,6,0,0,3,2,2,0,0,16,0,5,46,0,4,0,0,1,0,0,2,2,0,0,0,0,0,0,1,2,2,0,0,7,0,6,1,0,1,0,16,0,0,0 52 | Ratchaburi,0,3,21,1037,0,0,45,7,25,3,0,0,6,14,0,2,1,240,0,1,2,1,4,0,0,0,2,102,0,2,14,0,700,0,4,0,10,384,0,122,2,2,1,1,5,1,1,60,0,1,0,1,0,11,3,3,466,133,0,2,2,30,48,7,1,0,1,0,1,1,2,0,2,0,1,0,0 53 | Roi Et,5,0,4,65,1,12,10,1,1,0,4,0,1,3,0,137,0,6,64,13,0,0,0,11,263,0,0,6,0,5,57,5,1,0,0,0,2,2,0,3,0,0,0,0,2,0,2,9,0,1,0,0,0,2,0,2,1,0,2,0,6,1,2,3,12,11,0,0,0,0,0,21,9,0,0,0,43 54 | Ranong,0,0,2,18,0,0,2,0,1,0,0,14,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,0,0,1,2,0,8,4,0,0,6,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 55 | Rayong,0,2,21,570,0,5,789,195,15,7,0,0,7,432,0,15,4,5,2,2,7,0,2,0,1,1,0,43,0,0,32,1,24,0,8,1,17,7,1,5,2,0,2,0,8,0,26,73,0,1,7,3,0,0,2,1,4,7,9,1,0,4,95,6,2,6,0,0,1,1,54,0,5,3,1,0,1 56 | Sing Buri,0,62,121,96,0,0,18,4,2,37,0,0,0,1,1,1,14,0,0,1,7,0,49,0,0,0,0,28,0,0,5,0,5,0,68,0,1,3,11,1,0,0,10,0,2,1,0,44,0,1,1,0,0,4,0,0,1,2,0,0,0,14,12,9,1,0,3,0,3,0,0,0,0,4,11,0,0 57 | Songkhla,0,0,1,222,0,0,5,2,15,1,0,10,5,0,141,1,0,2,0,4,0,1,1,0,2,1,0,8,0,0,2,0,9,78,0,28,2,5,0,14,56,125,1,13,4,0,0,7,87,0,2,0,2,3,0,0,1,0,0,23,0,1,39,0,0,0,0,100,1,52,1,0,2,0,0,31,1 58 | Samut Songkhram,0,3,7,441,0,1,23,3,3,3,0,2,1,2,2,1,0,18,0,1,1,1,1,0,2,1,2,57,0,0,6,0,65,1,4,0,5,245,0,113,1,0,1,0,1,0,1,49,0,0,335,0,0,3,1,3,0,241,1,0,1,4,55,3,0,0,1,0,1,1,0,0,0,0,0,0,0 59 | Samut Sakhon,0,5,20,1447,0,1,31,7,4,0,0,0,3,6,0,5,1,18,1,0,2,0,4,0,0,2,0,112,0,0,12,0,335,0,1,0,5,115,0,42,4,0,4,2,1,0,1,74,0,0,75,2,1,9,2,1,128,0,1,0,1,11,130,6,2,0,0,0,0,0,1,0,1,0,2,0,0 60 | Sa Kaeo,0,0,5,70,0,18,17,41,0,1,0,0,0,37,0,0,1,0,0,0,0,0,2,0,0,0,0,3,0,0,3,0,0,1,1,0,5,1,1,0,0,0,2,0,3,0,40,9,0,0,1,1,0,6,1,1,1,1,0,0,0,0,12,4,1,3,0,1,0,0,5,2,0,0,0,0,0 61 | Surat Thani,0,0,4,263,0,1,11,3,32,0,0,71,2,0,88,2,0,7,0,1,1,0,1,0,0,3,0,8,0,0,3,0,3,96,0,1,1,11,1,32,73,9,0,41,10,1,2,5,1,0,4,0,4,4,0,34,0,4,0,0,0,2,58,0,0,1,0,3,0,8,1,1,0,0,0,2,0 62 | Sakon Nakhon,3,0,0,33,11,1,2,0,1,0,1,0,1,1,1,38,0,0,22,12,0,0,0,7,17,1,0,2,2,9,7,64,1,0,0,0,0,2,0,2,0,1,0,0,0,0,1,2,0,0,0,3,0,0,0,0,1,0,1,0,0,0,2,2,1,1,0,0,0,0,0,5,68,0,0,0,4 63 | Suphan Buri,0,69,103,315,0,1,22,2,12,29,0,1,5,3,0,3,4,84,0,3,3,0,13,0,2,1,1,199,0,0,13,0,119,1,19,0,2,23,0,17,1,0,7,0,3,1,1,75,0,0,21,0,0,4,15,0,6,9,0,0,0,0,31,10,1,0,1,0,1,0,0,0,0,2,15,0,0 64 | Samut Prakan,1,4,149,17307,0,9,857,322,142,23,3,0,58,63,13,49,4,50,1,2,16,2,22,1,8,2,2,686,0,3,79,2,234,17,28,0,74,132,1,76,59,0,7,5,23,3,25,657,0,2,54,6,1,108,12,31,59,127,13,25,1,33,0,64,4,6,9,1,3,4,11,24,27,4,3,1,0 65 | Saraburi,0,9,300,507,1,12,30,20,4,7,8,0,0,5,0,14,6,3,0,3,2,1,142,0,3,0,0,73,0,1,315,1,17,2,11,0,54,9,2,4,2,0,3,1,18,0,9,172,0,0,3,2,0,9,8,0,5,6,2,1,1,7,42,0,3,1,0,1,2,0,1,1,2,1,1,0,0 66 | Surin,0,0,9,43,0,75,8,2,1,1,2,0,7,3,0,6,0,1,2,1,0,0,0,1,7,0,0,5,0,1,44,0,2,0,0,0,2,0,0,2,0,0,0,0,1,0,2,5,0,0,2,18,0,4,0,0,1,0,2,2,1,0,8,3,0,46,0,0,2,0,0,18,2,0,1,0,1 67 | Sisaket,4,0,3,54,1,24,8,4,8,0,4,0,0,2,1,9,0,0,2,1,0,0,1,5,12,0,0,3,0,1,23,2,1,0,0,0,2,1,0,0,0,0,0,2,1,0,3,14,0,0,1,10,0,4,0,0,0,0,3,0,0,0,7,4,70,0,1,0,1,0,1,288,5,0,0,0,12 68 | Sukhothai,0,3,11,35,1,2,2,0,26,2,1,0,3,1,0,2,27,3,0,0,29,4,5,0,2,2,3,7,1,0,1,1,3,0,16,0,0,0,4,0,0,0,120,0,5,9,0,5,0,4,1,1,0,0,6,0,1,0,0,1,0,3,8,0,0,0,0,0,16,0,0,1,0,30,1,0,0 69 | Satun,0,0,2,31,0,0,4,0,3,0,0,0,1,0,14,0,0,0,0,0,0,1,0,0,0,0,0,3,0,0,0,0,1,4,0,2,0,3,0,0,1,5,0,5,3,0,0,2,2,0,1,0,0,0,0,104,1,0,0,5,0,0,3,1,0,0,0,0,1,8,1,0,1,0,0,1,0 70 | Tak,0,3,6,55,0,1,4,0,52,3,1,0,2,2,0,2,72,2,0,1,76,11,1,0,0,4,1,5,0,0,1,1,2,0,33,1,1,3,1,2,0,0,24,0,2,4,0,9,0,1,4,0,1,1,12,0,0,0,0,0,2,5,5,2,1,0,19,0,0,0,0,2,1,0,1,0,0 71 | Trang,0,0,23,49,0,0,1,0,2,0,0,16,2,0,81,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,1,22,0,1,0,2,0,2,7,39,1,5,1,0,0,1,1,0,1,0,1,0,0,42,0,0,0,11,1,0,3,0,0,0,0,8,0,0,0,1,0,0,0,2,0 72 | Trat,0,0,1,125,0,1,38,23,10,0,0,0,1,146,0,4,0,1,0,2,0,1,1,0,0,0,0,14,0,0,7,0,5,0,1,0,4,13,0,1,1,0,2,0,4,0,1,7,0,0,0,0,0,51,0,1,0,1,9,1,0,1,21,3,0,1,0,0,1,1,0,2,1,0,0,0,0 73 | Ubon Ratchathani,52,0,10,317,0,43,25,3,12,0,1,1,3,5,3,63,0,1,5,2,1,0,0,40,44,0,0,11,0,2,55,14,2,0,1,0,1,3,0,0,1,0,4,0,3,0,5,21,0,0,2,48,0,2,0,2,2,2,4,0,6,0,45,7,28,314,0,0,2,2,1,0,5,0,1,0,67 74 | Udon Thani,1,1,2,192,20,2,18,1,22,2,11,1,4,3,0,346,0,1,18,53,1,1,2,1,44,0,1,7,91,497,45,14,7,0,0,0,0,4,0,4,3,0,8,0,12,2,2,14,0,0,4,7,0,6,0,2,2,0,0,2,65,0,34,3,1,1,1,0,1,0,0,8,0,1,0,0,1 75 | Uttaradit,0,2,7,33,0,1,6,0,20,0,1,0,5,0,0,4,4,2,0,2,19,6,4,0,0,2,10,5,0,1,3,0,4,0,9,0,0,0,11,2,0,0,102,0,8,84,0,5,0,5,0,0,0,4,11,0,1,0,0,0,0,1,5,1,0,1,31,1,3,0,0,1,1,0,0,0,0 76 | Uthai Thani,0,6,16,38,0,0,5,0,2,35,1,0,0,1,0,0,3,2,0,0,0,2,4,0,0,0,0,5,0,0,3,0,7,0,81,0,0,0,0,0,0,0,3,1,1,0,0,5,0,0,2,0,0,2,18,0,1,1,0,0,0,18,2,2,2,0,1,0,3,0,0,0,1,0,0,0,0 77 | Yala,0,0,0,9,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,0,0,0,0,16,0,0,0,2,1,1,0,1,0,0,0,1,41,0,0,0,0,0,0,34,0,0,0,0,0,0,1,0,0,0,0,4,0,3,0,0,0,0,0,0,0 78 | Yasothon,13,0,1,6,0,6,0,1,0,0,1,0,0,0,0,13,0,1,4,0,0,0,0,10,16,0,0,3,0,0,10,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,5,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,46,1,0,0,0,0 79 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_TwoWay_7Days.csv: -------------------------------------------------------------------------------- 1 | ,Amnat Charoen,Ang Thong,Phra Nakhon Si Ayutthaya,Bangkok,Bueng Kan,Buriram,Chonburi,Chachoengsao,Chiang Mai,Chai Nat,Chaiyaphum,Chumphon,Chiang Rai,Chanthaburi,Krabi,Khon Kaen,Kamphaeng Phet,Kanchanaburi,Kalasin,Loei Province,Lampang,Lamphun,Lopburi Province,Mukdahan,Maha Sarakham,Mae Hong Son,Nan,Nonthaburi,Nong Bua Lam Phu,Nong Khai,Nakhon Ratchasima,Nakhon Phanom,Nakhon Pathom,Nakhon Si Thammarat,Nakhon Sawan,Narathiwat,Nakhon Nayok,Phetchaburi,Phichit,Prachuap Khiri Khan,Phuket,Phatthalung,Phitsanulok,Phang Nga,Phetchabun,Phrae,Prachinburi,Pathum Thani,Pattani,Phayao,Ratchaburi,Roi Et,Ranong,Rayong,Sing Buri,Songkhla,Samut Songkhram,Samut Sakhon,Sa Kaeo,Surat Thani,Sakon Nakhon,Suphan Buri,Samut Prakan,Saraburi,Surin,Sisaket,Sukhothai,Satun,Tak,Trang,Trat,Ubon Ratchathani,Udon Thani,Uttaradit,Uthai Thani,Yala,Yasothon 2 | Amnat Charoen,0,0,0,13,0,2,2,0,2,0,0,0,0,0,0,3,0,0,1,1,0,0,0,7,3,0,0,3,0,0,3,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,2,0,1,0,0,0,0,0,0,2,0,0,1,0,5,0,0,0,0,0,58,0,0,0,0,7 3 | Ang Thong,0,0,269,145,0,0,8,3,4,3,1,0,4,0,1,2,1,3,0,0,2,0,15,0,0,0,0,44,0,0,7,0,19,0,16,0,1,2,1,5,0,0,4,0,2,1,0,60,0,0,2,1,0,5,64,0,2,5,1,0,0,38,16,12,0,0,0,0,1,0,0,1,0,3,9,0,0 4 | Phra Nakhon Si Ayutthaya,0,290,0,2739,1,10,249,44,54,39,7,16,8,27,12,16,17,43,6,3,13,2,117,2,14,1,3,372,0,3,185,3,147,3,86,1,60,45,15,47,13,1,26,8,27,8,16,1635,0,2,25,3,3,44,119,3,35,34,10,13,1,167,205,345,7,3,15,1,7,25,6,11,5,9,21,0,2 5 | Bangkok,8,229,3083,0,8,191,7326,1819,1839,127,114,102,607,734,312,639,119,1464,38,167,276,44,481,26,161,87,157,21810,6,72,1841,72,7276,150,467,29,1280,2349,85,1863,493,18,340,81,402,81,304,17831,29,46,1615,125,33,1322,254,340,966,2113,195,379,50,761,25315,996,74,95,85,56,99,80,253,378,352,60,79,23,31 6 | Bueng Kan,0,0,0,7,0,0,1,0,0,0,1,1,0,0,1,4,0,0,2,1,0,0,0,0,0,0,0,1,0,41,3,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,0,11,0,0,1,0,1,0,0,1,0,0,0,28,0,0,0,0 7 | Buriram,2,1,15,140,0,0,24,7,16,0,9,0,1,15,1,49,1,4,3,1,5,0,2,2,59,0,1,15,0,3,265,0,8,1,0,2,4,0,0,2,1,0,2,1,5,2,7,16,0,1,1,13,0,3,1,0,1,2,14,1,2,2,12,15,97,21,3,1,0,0,2,29,2,0,0,0,6 8 | Chonburi,1,17,234,5829,0,38,0,981,113,24,8,7,32,271,14,58,9,90,7,17,25,6,34,2,21,10,7,424,1,12,211,5,184,5,50,0,50,92,4,52,21,1,28,5,50,7,91,619,0,7,64,11,2,927,18,12,38,64,31,14,2,37,1279,44,14,8,8,5,4,2,54,32,25,6,4,1,1 9 | Chachoengsao,0,3,50,1462,0,7,611,0,9,1,2,0,5,61,2,6,1,11,1,0,2,1,4,0,3,0,1,126,0,2,45,0,34,3,4,0,35,16,4,9,0,0,6,0,6,0,67,148,0,0,10,1,0,121,3,3,9,14,38,3,0,7,366,14,2,2,1,0,2,2,8,2,5,1,1,0,0 10 | Chiang Mai,0,4,77,1951,0,15,110,14,0,5,7,4,1176,18,64,45,87,26,0,13,1039,1528,17,1,21,238,51,104,0,6,47,4,41,5,77,2,15,30,13,40,45,2,68,12,42,154,8,117,3,142,36,5,0,43,17,12,11,7,2,44,8,18,321,11,6,11,63,9,102,5,10,18,37,41,6,2,2 11 | Chai Nat,0,10,41,91,0,0,16,1,5,0,1,0,1,2,0,0,8,4,0,1,4,0,16,0,0,0,1,16,0,0,3,0,7,0,97,0,0,4,9,1,0,0,17,0,1,0,0,26,0,0,3,0,0,7,50,0,0,5,0,0,0,39,23,5,1,0,2,0,5,0,0,0,1,3,38,1,0 12 | Chaiyaphum,0,0,10,91,0,7,13,0,8,0,0,0,2,3,0,113,1,3,2,10,2,2,13,1,17,0,0,4,1,7,139,3,1,0,4,0,1,3,1,0,0,0,6,1,21,0,2,12,0,0,1,3,0,2,1,0,1,1,2,1,2,1,3,16,3,2,0,0,0,0,0,3,12,0,0,0,0 13 | Chumphon,0,0,11,88,0,0,2,0,5,0,0,0,2,0,7,0,0,1,0,0,0,0,0,0,1,0,0,5,0,0,1,0,6,18,1,0,1,15,1,90,5,5,0,9,1,0,1,2,2,0,1,1,21,0,0,10,6,4,0,63,1,0,3,2,0,0,0,1,0,17,1,0,0,1,0,0,0 14 | Chiang Rai,0,2,20,752,0,3,49,3,1167,3,0,3,0,5,10,16,9,7,0,5,130,29,2,0,1,23,32,31,0,2,7,0,9,3,22,0,5,14,10,15,9,0,48,5,9,71,3,41,0,507,7,4,0,16,4,4,1,1,1,5,1,10,135,3,7,0,18,0,4,0,3,3,8,23,1,0,0 15 | Chanthaburi,0,1,26,476,0,9,235,119,11,0,0,0,3,0,2,7,1,9,1,3,5,2,6,0,7,0,2,54,0,0,19,3,28,0,6,0,5,17,0,2,3,0,3,1,2,0,14,48,0,1,11,2,2,321,1,2,3,14,35,2,2,4,76,13,2,5,2,0,2,0,181,4,4,1,2,0,0 16 | Krabi,0,0,25,344,0,0,9,5,104,0,1,4,10,0,0,4,0,5,0,1,1,0,3,0,2,6,0,6,0,1,2,0,6,28,4,6,0,8,0,6,714,24,1,166,16,3,0,6,3,0,8,0,2,2,0,155,5,2,1,143,0,1,38,0,0,0,1,31,0,119,2,0,2,0,0,0,0 17 | Khon Kaen,4,1,31,618,9,63,63,14,58,0,164,1,13,10,2,0,2,11,256,139,6,7,5,29,899,2,3,40,49,143,455,31,28,2,3,0,23,9,3,18,3,0,17,4,81,3,12,73,0,3,5,198,0,32,2,1,5,4,1,3,55,4,78,29,23,38,1,0,4,1,4,123,536,4,0,1,20 18 | Kamphaeng Phet,0,3,23,99,0,1,11,1,50,9,0,0,2,4,1,2,0,4,0,0,45,6,4,1,0,2,3,4,0,1,8,0,8,0,118,0,0,8,6,3,0,0,83,0,6,3,0,11,0,7,1,0,0,6,14,0,2,1,0,0,0,6,10,4,1,0,24,0,67,0,1,1,0,2,3,0,0 19 | Kanchanaburi,0,2,40,978,1,2,92,9,25,2,0,0,2,10,4,11,2,0,0,3,4,2,9,1,4,2,3,142,2,2,31,1,401,1,11,1,11,66,1,35,7,0,5,0,3,2,2,109,0,0,305,4,1,14,0,3,25,27,2,10,1,104,78,4,4,0,2,0,4,3,3,4,1,2,1,0,2 20 | Kalasin,0,1,2,27,0,1,4,2,1,0,2,0,1,0,0,185,0,1,0,4,0,0,1,15,465,1,0,3,1,5,22,16,1,0,0,0,1,0,0,0,0,0,0,0,4,0,1,6,0,0,0,77,0,2,0,0,3,0,0,0,12,1,4,4,1,2,0,0,0,0,0,3,25,0,0,0,5 21 | Loei Province,0,0,0,136,3,1,13,2,4,0,5,0,6,2,0,105,1,5,3,0,5,1,5,4,17,0,1,9,23,33,20,0,2,0,2,0,2,1,2,1,5,1,51,2,89,2,4,12,0,2,1,4,0,8,0,4,1,0,0,1,14,1,8,8,1,2,1,0,2,0,3,6,65,6,0,0,0 22 | Lampang,0,2,11,317,0,4,30,2,976,7,1,0,110,1,2,8,65,2,0,4,0,173,1,0,2,4,16,20,0,2,9,0,6,0,57,0,1,10,4,6,0,1,28,0,9,127,1,30,0,101,5,0,0,9,8,1,4,0,1,1,2,10,41,3,0,0,41,0,109,0,1,2,8,29,2,0,0 23 | Lamphun,0,0,5,41,0,0,2,1,1068,0,0,0,20,2,0,4,6,0,0,2,172,0,1,0,1,4,2,2,0,0,1,0,3,0,4,0,0,2,0,2,1,0,7,0,1,10,0,1,0,4,2,0,0,4,0,0,1,0,0,1,1,0,1,0,0,0,1,1,11,0,1,1,1,7,1,0,0 24 | Lopburi Province,0,13,141,349,0,0,31,1,12,14,11,0,4,3,0,12,1,10,1,4,6,0,0,1,3,0,2,50,2,1,32,0,22,1,24,0,12,6,4,1,1,0,7,0,35,1,1,97,0,1,1,2,0,7,61,2,3,5,2,2,0,10,20,195,1,2,2,0,2,1,1,2,2,3,3,0,0 25 | Mukdahan,6,0,2,27,0,1,6,3,1,0,0,0,1,0,0,15,0,3,11,2,0,1,0,0,14,0,0,1,0,3,9,66,1,0,0,0,0,1,0,1,0,0,1,0,0,0,2,8,0,0,0,13,0,0,0,0,0,0,0,0,11,0,1,1,0,4,0,0,1,0,0,34,2,0,0,0,18 26 | Maha Sarakham,2,0,25,183,1,77,34,3,21,0,12,1,6,12,1,1182,2,7,552,32,4,1,4,21,0,2,3,14,10,34,170,20,5,1,1,0,3,24,1,13,1,0,5,0,20,0,10,21,0,2,1,472,0,17,2,1,3,2,4,2,19,4,18,11,22,18,5,0,0,0,0,56,78,4,0,0,43 27 | Mae Hong Son,0,0,2,59,0,0,5,0,269,1,1,0,14,0,2,1,1,1,0,0,4,2,0,1,1,0,1,1,0,0,0,0,5,0,0,0,0,3,0,0,0,0,1,0,1,0,0,6,0,2,0,1,0,1,0,0,0,0,0,4,0,0,3,0,0,1,3,1,2,0,0,0,0,4,0,2,0 28 | Nan,0,0,3,114,0,2,5,3,42,1,0,0,24,0,1,2,2,3,2,4,16,1,1,0,1,1,0,4,0,0,4,0,3,0,8,0,2,1,2,2,1,1,12,0,5,85,2,7,0,23,2,0,1,2,3,2,0,2,0,1,1,3,6,0,0,0,3,0,1,0,0,1,1,15,0,0,0 29 | Nonthaburi,2,42,383,18021,3,16,465,93,111,28,12,6,33,53,6,50,4,120,2,14,23,0,56,2,8,1,6,0,3,2,167,5,910,5,37,2,89,184,16,129,14,1,24,6,28,6,24,3102,1,4,124,4,3,77,40,14,84,122,6,13,2,178,817,97,4,4,5,4,5,1,22,21,15,8,18,0,3 30 | Nong Bua Lam Phu,0,0,1,8,0,0,1,1,0,0,2,0,0,0,0,32,0,0,0,19,1,0,0,0,7,0,1,1,0,15,2,2,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,1,0,1,0,2,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,90,0,0,0,1 31 | Nong Khai,1,1,8,93,41,1,20,2,9,0,7,0,3,0,0,120,0,3,3,44,4,0,0,2,36,0,0,3,13,0,32,3,4,0,0,0,0,1,0,2,0,0,1,0,6,2,2,18,0,0,2,7,1,2,0,1,0,0,1,2,15,0,8,5,2,2,0,0,2,0,0,0,998,0,0,0,3 32 | Nakhon Ratchasima,4,4,303,1457,0,324,218,46,48,6,187,2,8,39,3,416,2,35,20,26,8,0,46,7,136,1,5,176,6,24,0,9,60,4,17,1,180,31,8,37,9,0,22,1,33,2,151,383,0,2,18,51,0,52,12,6,11,13,15,7,11,25,130,487,70,34,3,1,2,1,14,57,42,1,3,0,9 33 | Nakhon Phanom,7,1,1,61,9,0,3,0,2,0,1,0,0,1,0,23,0,0,11,1,0,0,0,52,20,0,1,0,2,4,13,0,2,0,0,0,0,1,2,1,0,0,2,1,2,0,0,5,0,0,0,5,2,0,1,0,2,1,0,0,99,0,2,2,2,6,0,0,0,0,1,14,9,0,0,0,2 34 | Nakhon Pathom,0,13,138,6305,1,8,204,34,50,7,4,5,13,29,6,31,10,382,0,4,9,2,18,1,2,4,2,915,0,3,70,4,0,3,24,0,28,249,2,163,5,0,22,2,10,8,10,401,0,4,743,6,1,31,8,8,108,431,4,8,1,180,314,27,1,1,6,2,2,3,3,8,14,2,7,1,0 35 | Nakhon Si Thammarat,0,0,5,148,0,0,11,0,3,0,0,9,3,2,24,1,0,0,0,0,0,1,1,0,0,0,0,6,0,1,0,0,0,0,0,3,0,6,0,17,24,38,0,6,0,1,0,5,3,0,3,0,3,1,0,95,1,1,0,131,0,1,13,1,0,0,0,8,0,34,0,1,1,1,0,3,0 36 | Nakhon Sawan,0,15,113,421,0,1,55,10,56,119,7,3,11,1,2,6,112,5,0,3,41,6,29,0,2,0,9,45,0,0,11,1,28,0,0,0,11,21,150,11,4,0,132,0,30,20,1,98,1,10,2,0,0,10,95,1,1,1,2,1,0,43,39,10,1,0,17,0,36,1,0,2,0,18,117,0,0 37 | Narathiwat,0,0,0,29,0,2,0,0,1,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,3,32,0,0,0,0,1,0,36,0,0,0,4,0,0,4,0,0,0,1,1,0,0,1,0,0,0,0,18,0 38 | Nakhon Nayok,0,3,56,970,0,3,49,26,13,3,4,0,3,8,0,16,0,11,1,6,0,0,8,0,1,0,1,94,0,2,161,0,40,1,9,1,0,15,0,12,1,0,1,0,3,2,92,521,0,1,18,1,0,18,3,2,5,7,14,5,1,9,91,59,0,1,0,0,0,0,4,4,2,2,1,0,0 39 | Phetchaburi,2,5,38,1864,0,2,70,19,26,2,4,11,9,12,2,3,1,81,1,3,9,0,9,1,16,1,3,199,0,4,35,2,252,9,12,0,12,0,2,2375,3,1,4,0,8,3,3,195,2,0,378,2,3,9,9,5,284,364,3,14,0,31,141,11,0,1,0,1,4,1,10,7,6,5,0,0,0 40 | Phichit,0,2,14,59,0,0,6,3,10,9,1,1,3,0,0,1,7,1,0,2,2,0,10,0,0,0,1,7,0,0,2,1,2,0,127,0,1,3,0,0,0,0,170,0,19,6,1,13,0,1,0,0,0,0,15,0,0,1,1,0,1,1,5,1,1,0,8,0,1,0,0,4,1,8,3,0,0 41 | Prachuap Khiri Khan,0,1,46,1098,0,2,48,8,19,3,2,72,10,8,10,15,0,42,0,2,9,0,2,0,8,1,0,124,0,2,29,1,132,15,11,2,10,2399,2,0,14,4,7,4,8,5,3,87,0,5,134,2,3,14,3,6,113,196,2,37,3,23,112,9,1,2,0,1,2,2,1,5,9,2,0,0,0 42 | Phuket,0,0,16,514,0,0,19,1,63,0,0,6,8,2,594,4,1,4,0,2,0,0,0,0,2,2,0,17,0,2,10,0,4,23,1,2,1,3,0,15,0,8,6,601,22,0,0,11,1,0,9,0,4,3,0,69,2,3,0,123,0,1,155,0,1,0,1,2,0,18,6,2,8,0,1,3,0 43 | Phatthalung,0,0,5,24,0,1,1,0,1,0,0,2,0,0,24,1,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,2,30,0,3,0,1,0,5,1,0,0,3,1,0,0,0,2,0,0,0,1,0,0,125,0,1,0,12,0,0,3,0,0,0,0,4,0,51,0,0,0,0,0,3,0 44 | Phitsanulok,0,6,41,272,0,3,29,4,76,13,4,2,41,3,1,21,75,13,2,44,32,8,9,0,3,1,19,32,1,2,12,2,15,1,129,0,4,8,166,9,4,0,0,0,160,82,1,29,0,19,3,0,0,8,19,2,2,2,4,1,1,12,18,4,0,1,148,1,30,0,2,5,3,137,8,0,2 45 | Phang Nga,0,0,6,69,0,0,5,0,13,0,0,9,2,0,170,1,0,0,0,1,1,0,0,0,0,1,0,1,0,0,3,0,3,9,0,0,0,2,0,7,600,1,0,0,4,0,1,5,1,1,5,0,12,1,0,13,2,3,0,38,0,1,11,1,1,0,0,8,2,10,0,0,2,0,0,0,0 46 | Phetchabun,0,0,32,305,0,3,34,7,39,1,17,1,10,5,12,63,2,3,4,78,9,2,45,2,10,3,4,29,2,9,28,1,13,3,24,1,2,3,23,11,30,1,161,5,0,11,2,37,0,6,4,3,1,6,4,5,2,2,6,7,0,9,23,32,1,1,12,2,5,3,3,5,11,16,1,0,3 47 | Phrae,0,2,9,75,0,1,8,0,149,5,0,0,66,0,1,2,2,0,1,3,147,13,1,0,0,3,77,14,0,2,2,0,6,0,14,0,2,4,5,5,1,1,63,0,8,0,0,12,0,63,1,1,0,1,5,0,0,0,0,0,0,0,6,0,0,0,14,0,6,0,1,1,0,93,1,0,0 48 | Prachinburi,0,2,11,235,0,9,81,90,2,1,1,2,0,21,0,8,1,3,0,3,2,1,0,0,2,0,1,21,1,1,94,0,5,0,0,0,110,4,0,3,0,0,0,1,4,0,0,45,0,0,3,1,0,33,0,1,2,6,44,3,1,1,33,13,4,0,0,0,1,0,5,2,1,0,1,0,0 49 | Pathum Thani,1,71,1484,15789,3,24,584,127,124,40,24,11,43,70,5,86,25,125,4,13,41,2,97,1,24,3,6,3171,2,14,368,8,357,7,109,1,438,167,18,128,13,3,37,5,43,18,45,0,2,9,106,7,2,126,66,19,76,74,14,14,8,111,851,252,8,16,13,2,11,4,14,31,26,9,25,0,3 50 | Pattani,0,0,0,20,0,0,1,0,3,0,0,3,1,0,3,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,25,0,0,0,1,3,6,0,2,0,0,0,1,0,0,0,0,0,0,0,121,0,1,0,5,0,0,1,0,0,0,0,1,0,4,0,0,0,0,0,46,0 51 | Phayao,0,2,6,53,0,1,11,2,136,2,3,1,381,1,0,2,5,2,0,5,110,6,1,0,0,3,24,5,0,4,0,0,1,0,9,0,0,4,4,2,1,0,20,1,6,48,0,8,0,0,2,0,0,3,2,0,0,0,0,0,0,2,3,2,0,0,11,0,9,1,0,1,1,17,0,0,0 52 | Ratchaburi,0,4,35,1438,0,2,71,9,33,4,1,2,9,19,5,2,1,286,0,1,4,1,5,0,1,1,3,139,0,2,20,0,877,0,6,0,13,467,0,164,3,2,1,4,7,1,1,89,0,1,0,1,0,19,4,3,528,144,0,4,2,39,75,11,1,1,1,0,2,1,2,0,3,0,1,0,0 53 | Roi Et,6,0,5,101,1,15,17,1,4,0,4,0,1,4,0,179,0,7,85,14,0,0,1,15,385,0,0,7,1,8,70,9,2,0,1,0,3,3,0,5,0,0,0,0,3,1,2,10,0,1,0,0,0,3,0,2,2,1,3,0,7,1,5,3,14,14,0,0,0,0,0,34,12,0,0,0,48 54 | Ranong,0,0,2,31,0,0,2,0,3,0,0,21,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,2,1,0,0,1,3,0,8,5,0,0,9,0,0,0,2,0,0,1,0,0,0,0,2,0,1,1,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 55 | Rayong,0,2,31,896,0,6,912,212,30,8,0,0,9,457,1,22,4,7,3,2,7,0,4,0,3,1,2,68,0,0,45,1,40,0,11,1,28,14,2,11,3,0,3,0,10,3,27,118,0,2,11,3,0,0,2,3,6,8,11,2,0,10,116,12,5,11,0,0,1,2,71,1,8,3,2,0,1 56 | Sing Buri,1,64,132,169,0,0,23,5,3,41,0,0,2,1,1,3,17,1,0,1,8,0,62,0,0,0,2,33,0,0,5,0,12,0,78,0,2,3,13,2,1,0,14,0,4,2,0,62,0,1,3,0,0,4,0,0,1,2,0,2,0,16,19,12,1,0,4,0,3,0,0,0,0,4,14,0,0 57 | Songkhla,0,0,1,334,0,0,7,2,20,1,0,13,7,1,178,2,0,2,0,5,1,1,3,0,2,1,1,15,0,0,2,0,9,111,1,40,2,6,0,18,73,173,2,19,5,0,0,10,120,0,2,1,4,6,0,0,1,0,0,40,0,2,45,0,0,0,1,138,1,73,1,0,2,0,0,54,1 58 | Samut Songkhram,0,4,13,621,0,2,40,4,3,3,0,2,1,3,2,2,0,23,1,1,1,1,3,0,2,1,2,67,0,0,8,0,86,1,4,0,7,268,0,120,1,0,1,1,2,0,2,66,0,0,415,0,0,5,1,4,0,251,2,1,1,7,74,3,0,0,2,0,1,1,0,2,0,0,0,0,0 59 | Samut Sakhon,0,6,29,1940,1,2,47,7,4,1,0,0,5,6,0,7,1,21,1,0,2,1,4,2,0,2,1,134,0,0,17,2,399,0,1,0,12,146,0,54,4,1,4,2,5,2,1,102,0,1,92,2,1,14,4,1,139,0,2,4,1,13,162,11,2,1,0,0,1,0,1,0,2,0,2,0,0 60 | Sa Kaeo,0,0,7,121,0,22,24,47,0,1,2,0,0,42,0,1,1,0,0,0,0,0,2,0,0,0,0,7,0,0,5,0,0,1,1,0,11,4,1,0,0,0,2,0,4,1,44,15,0,0,1,3,0,9,1,1,1,2,0,0,0,0,13,5,1,3,1,1,1,0,7,2,1,0,0,0,0 61 | Surat Thani,0,0,6,414,0,1,23,5,53,0,0,87,9,4,129,3,0,11,0,1,2,1,2,0,0,5,0,12,0,0,4,0,5,126,0,1,5,13,1,37,106,11,0,51,11,1,2,10,1,0,6,0,7,6,0,47,0,4,0,0,0,3,66,0,1,1,0,4,0,11,3,1,2,0,0,2,0 62 | Sakon Nakhon,4,0,0,52,14,4,4,0,2,0,1,0,2,2,1,61,0,0,26,13,0,0,0,13,25,1,0,2,2,17,9,97,1,0,0,0,0,3,0,2,0,1,0,0,0,0,2,2,0,0,1,3,0,0,0,1,2,1,1,0,0,0,2,2,2,1,1,0,0,0,0,10,93,0,0,0,4 63 | Suphan Buri,0,72,113,587,0,2,39,2,17,31,0,1,7,6,2,6,4,107,0,3,6,1,16,0,4,1,4,235,0,0,18,0,168,2,25,0,4,28,1,24,2,0,9,0,6,1,3,102,0,1,30,0,0,6,19,1,7,10,0,2,0,0,47,11,1,0,1,0,1,0,2,1,1,3,17,0,0 64 | Samut Prakan,2,7,182,22194,0,16,1193,350,218,26,4,3,98,84,23,67,8,86,3,6,26,2,34,3,9,4,5,847,0,8,136,2,314,19,42,2,104,169,2,140,80,0,13,7,32,4,34,873,1,5,72,9,2,148,18,40,79,146,17,50,2,48,0,75,9,8,13,2,7,7,21,39,39,8,5,3,1 65 | Saraburi,0,11,348,729,1,15,41,21,6,7,8,0,3,11,1,19,6,5,1,4,3,1,169,0,6,0,0,105,0,1,366,1,27,2,14,0,62,14,2,8,3,0,3,1,23,0,14,219,0,0,5,5,0,11,9,1,5,8,3,2,1,11,59,0,4,1,0,1,2,0,1,1,2,1,1,0,1 66 | Surin,1,0,9,71,0,86,11,3,3,1,2,0,7,5,0,14,0,2,2,3,0,0,0,1,11,0,0,8,0,1,63,0,4,0,0,0,2,1,0,2,0,0,0,0,3,0,2,11,0,0,3,22,0,5,0,0,2,0,2,3,1,1,10,4,0,66,0,0,2,0,2,32,2,0,1,0,2 67 | Sisaket,4,0,4,81,1,31,11,5,9,0,5,0,0,3,1,19,0,0,2,1,1,0,2,6,21,0,0,6,0,1,28,2,2,0,0,0,2,2,0,1,0,0,0,2,1,1,3,25,0,0,1,10,0,7,1,0,1,0,3,0,0,0,9,8,77,0,1,0,1,0,2,411,6,1,0,0,13 68 | Sukhothai,0,3,12,59,1,2,9,2,47,2,1,0,6,1,0,3,31,4,0,1,35,5,7,0,3,2,3,8,1,0,1,1,5,0,16,0,0,1,5,2,0,0,147,0,7,11,0,8,0,6,1,1,0,0,7,0,2,1,0,1,0,4,12,0,0,0,0,1,19,0,0,1,0,34,1,0,0 69 | Satun,0,0,2,39,0,0,4,0,4,0,0,1,2,0,22,0,0,0,0,0,0,1,0,0,0,0,0,5,0,0,0,0,2,6,0,3,0,4,0,2,2,5,0,7,3,0,0,2,6,0,2,0,0,0,0,126,2,0,0,7,0,0,5,1,0,0,0,0,1,12,1,0,1,0,0,2,0 70 | Tak,0,3,6,80,0,1,6,0,75,3,1,1,4,3,0,2,82,3,0,1,91,13,2,0,0,4,1,10,0,0,2,1,3,0,36,1,1,5,1,4,0,0,32,0,3,5,0,13,0,1,4,0,1,1,12,0,0,0,0,2,2,8,6,2,2,0,25,0,0,0,0,3,3,2,2,0,0 71 | Trang,0,0,24,72,0,0,1,0,4,0,0,18,2,0,91,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,1,27,0,1,0,3,0,2,12,48,1,6,3,0,0,1,2,0,1,0,1,0,0,57,0,0,0,15,1,1,3,0,0,0,0,13,0,0,1,1,0,0,0,2,0 72 | Trat,0,0,4,218,0,1,59,24,17,0,1,2,2,159,1,5,0,2,0,2,0,1,2,0,0,1,0,20,0,0,12,0,6,3,1,0,5,13,0,3,2,0,2,0,4,0,1,12,0,0,0,1,0,56,1,2,0,1,9,2,0,1,25,4,1,1,0,0,1,1,0,2,1,0,0,0,0 73 | Ubon Ratchathani,69,0,16,469,1,53,41,3,20,0,3,2,3,7,4,106,0,1,11,2,1,0,1,51,65,0,0,20,0,4,72,19,5,0,1,0,1,10,1,3,2,0,5,0,5,0,5,33,0,0,2,59,0,9,1,2,3,3,4,2,7,1,61,9,37,462,0,0,2,2,5,0,9,0,1,0,86 74 | Udon Thani,2,1,2,287,29,2,21,2,33,2,14,1,8,5,0,454,0,4,26,73,1,3,3,3,73,0,1,19,116,755,63,16,10,1,0,0,0,4,0,5,7,0,10,0,17,2,3,25,0,1,5,8,0,9,0,4,2,0,0,3,92,2,45,3,1,2,1,0,1,0,1,10,0,1,0,0,1 75 | Uttaradit,0,2,8,63,0,1,10,0,32,0,1,0,12,0,0,6,4,2,0,3,21,6,4,0,0,3,14,6,0,1,3,0,6,1,10,0,0,2,11,5,0,0,115,0,10,103,0,9,0,5,0,0,0,9,11,0,1,0,0,0,0,2,11,1,0,1,31,1,5,0,0,2,1,0,0,0,0 76 | Uthai Thani,0,6,18,64,0,0,6,1,3,38,1,0,0,1,0,0,4,2,0,0,0,3,5,0,0,0,0,7,0,0,3,0,11,0,99,0,0,0,1,0,0,0,4,1,3,0,1,10,0,0,2,0,0,2,18,0,1,1,0,0,0,18,3,2,2,0,2,0,3,0,0,0,1,0,0,0,0 77 | Yala,0,0,0,17,0,0,0,0,3,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,0,0,3,0,19,0,0,0,2,4,1,0,1,0,0,0,1,53,0,0,0,1,0,0,42,0,0,0,0,0,0,1,0,0,0,0,5,0,3,0,0,0,0,0,0,0 78 | Yasothon,13,0,1,16,0,8,3,1,0,0,2,0,0,1,0,16,0,1,5,2,0,0,0,12,28,0,0,5,1,0,10,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,7,0,0,0,36,0,1,0,0,0,0,0,0,0,0,0,2,3,6,0,0,0,0,0,63,1,0,0,0,0 79 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_TwoWay_14Days.csv: -------------------------------------------------------------------------------- 1 | ,Amnat Charoen,Ang Thong,Phra Nakhon Si Ayutthaya,Bangkok,Bueng Kan,Buriram,Chonburi,Chachoengsao,Chiang Mai,Chai Nat,Chaiyaphum,Chumphon,Chiang Rai,Chanthaburi,Krabi,Khon Kaen,Kamphaeng Phet,Kanchanaburi,Kalasin,Loei Province,Lampang,Lamphun,Lopburi Province,Mukdahan,Maha Sarakham,Mae Hong Son,Nan,Nonthaburi,Nong Bua Lam Phu,Nong Khai,Nakhon Ratchasima,Nakhon Phanom,Nakhon Pathom,Nakhon Si Thammarat,Nakhon Sawan,Narathiwat,Nakhon Nayok,Phetchaburi,Phichit,Prachuap Khiri Khan,Phuket,Phatthalung,Phitsanulok,Phang Nga,Phetchabun,Phrae,Prachinburi,Pathum Thani,Pattani,Phayao,Ratchaburi,Roi Et,Ranong,Rayong,Sing Buri,Songkhla,Samut Songkhram,Samut Sakhon,Sa Kaeo,Surat Thani,Sakon Nakhon,Suphan Buri,Samut Prakan,Saraburi,Surin,Sisaket,Sukhothai,Satun,Tak,Trang,Trat,Ubon Ratchathani,Udon Thani,Uttaradit,Uthai Thani,Yala,Yasothon 2 | Amnat Charoen,0,0,0,19,0,2,3,0,3,0,0,0,0,0,0,4,0,1,1,3,0,0,0,10,3,0,0,3,0,0,4,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,2,0,1,0,0,0,0,0,0,3,0,0,1,0,5,0,0,0,0,0,67,1,0,0,0,7 3 | Ang Thong,0,0,307,203,0,0,9,3,5,3,1,0,4,1,2,2,1,3,0,0,3,0,16,0,0,0,0,47,0,0,11,0,19,0,18,0,1,2,1,5,0,0,4,0,3,1,0,71,0,0,3,1,0,5,64,0,2,5,1,0,0,40,19,13,0,0,0,0,1,0,0,1,0,4,9,0,0 4 | Phra Nakhon Si Ayutthaya,0,300,0,3286,1,12,320,46,68,41,8,16,12,31,18,21,19,54,6,5,13,2,129,2,16,1,3,431,1,4,218,3,165,3,103,2,66,53,17,61,17,2,32,9,31,12,21,1790,0,3,29,3,3,52,122,3,37,37,13,17,2,180,239,367,7,4,16,1,7,25,9,11,8,11,22,0,2 5 | Bangkok,13,261,3502,0,12,224,8650,1978,2324,150,146,124,759,883,405,800,141,1701,50,213,352,52,559,32,219,103,210,23844,10,96,2237,97,8270,187,557,39,1474,2819,106,2184,608,18,417,98,483,97,365,19959,38,58,1881,152,41,1555,274,418,1077,2275,225,504,63,899,27656,1109,91,130,102,72,128,100,318,507,431,78,92,25,40 6 | Bueng Kan,0,0,0,13,0,0,3,0,0,0,1,1,0,0,1,5,0,0,2,1,0,0,0,0,0,0,0,2,0,48,3,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,0,15,0,0,2,0,1,0,0,1,0,0,0,29,0,0,0,0 7 | Buriram,2,1,17,188,0,0,31,8,17,0,9,0,1,18,1,63,2,4,3,1,5,0,3,3,73,0,1,22,0,3,316,0,10,1,0,2,4,2,0,2,1,0,3,1,6,2,10,24,0,1,2,17,0,4,1,0,1,4,14,2,2,2,12,15,107,24,3,1,0,0,3,34,3,0,0,0,7 8 | Chonburi,1,19,276,7360,1,45,0,1031,152,26,11,10,44,313,17,77,10,112,8,22,32,7,39,6,27,11,12,517,1,13,262,10,244,10,54,1,60,119,8,79,32,1,40,5,67,10,105,747,0,10,76,15,2,1015,19,20,45,77,34,22,5,49,1450,51,20,14,14,7,4,2,67,49,35,9,7,1,1 9 | Chachoengsao,0,3,62,1866,0,8,671,0,14,1,2,0,7,67,3,10,2,13,1,0,2,1,8,0,4,0,1,141,0,2,54,2,41,3,7,0,40,23,4,14,0,0,7,0,7,0,72,171,0,0,16,1,0,133,3,3,9,15,42,4,0,7,395,14,3,3,1,0,2,2,9,4,5,1,1,0,0 10 | Chiang Mai,0,5,95,2419,0,16,149,16,0,7,8,6,1449,24,86,66,93,32,3,14,1239,1625,20,1,21,268,65,132,0,8,56,4,50,7,97,2,18,39,14,51,53,2,82,13,48,189,8,143,3,175,39,6,0,51,18,19,13,9,3,60,9,21,358,18,6,13,69,9,125,6,14,20,45,49,6,2,2 11 | Chai Nat,0,10,47,126,0,0,22,1,6,0,1,0,1,2,0,0,9,4,0,1,4,0,17,0,0,0,1,19,0,0,4,0,7,0,111,0,0,6,10,1,0,0,19,0,1,1,0,31,0,0,4,0,0,8,52,0,1,5,0,0,0,44,23,5,1,0,2,0,7,0,0,0,1,3,39,1,0 12 | Chaiyaphum,0,0,11,121,0,9,18,2,12,0,0,0,2,3,0,140,1,3,2,13,2,2,13,1,18,0,0,8,1,8,172,3,2,0,5,0,1,3,1,1,0,0,7,1,21,0,2,17,0,0,1,3,0,4,1,0,1,1,2,1,2,1,3,16,3,3,1,0,0,0,0,5,13,0,0,0,0 13 | Chumphon,0,1,11,110,0,0,4,0,7,0,0,0,3,0,7,1,0,1,0,0,0,0,0,0,1,0,0,7,0,0,1,0,7,20,1,0,1,15,1,93,6,5,0,10,2,0,1,2,2,1,1,1,25,0,0,11,6,4,0,72,1,0,6,2,0,0,0,1,0,19,1,1,0,1,0,0,0 14 | Chiang Rai,1,2,22,922,0,3,71,3,1397,3,0,3,0,6,16,19,11,10,0,5,158,32,4,0,2,23,36,46,0,4,14,1,11,5,25,0,5,15,12,19,12,0,54,7,13,80,3,50,1,571,12,4,0,17,4,5,3,1,1,5,1,11,155,3,7,0,20,0,5,0,6,3,8,26,1,0,0 15 | Chanthaburi,0,1,32,663,0,10,278,121,15,1,0,2,3,0,4,12,2,10,2,4,6,2,6,0,8,1,2,66,0,0,29,4,39,0,6,0,5,22,0,5,4,0,3,1,4,0,16,61,0,1,21,3,2,342,2,2,5,14,42,4,2,6,92,16,2,5,2,0,2,0,191,7,6,1,2,0,0 16 | Krabi,0,0,29,422,0,1,13,5,123,0,1,4,12,0,0,4,0,6,0,1,1,1,3,0,2,8,0,7,0,1,3,0,9,31,4,7,1,8,0,6,774,27,1,171,18,3,0,8,3,0,8,0,4,4,0,168,5,2,1,186,0,1,44,0,0,0,1,32,1,122,2,0,3,0,0,1,0 17 | Khon Kaen,4,1,38,776,16,76,80,17,67,0,182,1,17,13,4,0,2,16,285,162,7,8,8,35,1148,2,4,54,53,182,532,39,37,3,5,0,25,15,3,21,4,0,18,4,88,3,12,88,1,6,7,235,0,41,2,1,6,4,3,8,74,6,99,31,27,47,1,0,6,1,5,156,604,4,1,2,24 18 | Kamphaeng Phet,0,3,23,135,0,2,15,2,61,9,0,0,3,4,1,2,0,4,0,0,48,6,4,1,0,2,3,10,0,1,11,0,8,0,125,0,1,8,6,3,0,0,101,0,7,4,0,17,0,8,1,0,0,6,14,0,2,1,0,0,0,6,10,4,1,0,25,0,71,0,1,1,0,2,5,0,0 19 | Kanchanaburi,0,2,48,1302,1,4,114,12,31,2,0,0,7,10,7,15,2,0,0,3,5,2,10,1,5,3,3,168,2,2,37,1,459,2,11,1,13,79,1,44,8,0,6,1,3,2,3,134,0,0,353,6,1,20,0,4,28,31,2,12,2,114,99,6,4,0,4,0,4,3,4,4,2,2,1,0,2 20 | Kalasin,0,1,3,47,0,1,6,2,1,0,2,0,1,0,0,233,0,1,0,4,0,0,1,17,539,1,0,3,1,6,25,17,1,0,0,0,1,0,0,0,0,0,0,0,4,0,2,9,0,0,0,82,0,5,0,0,4,0,0,0,15,1,5,4,1,2,0,0,0,0,0,6,28,0,0,0,5 21 | Loei Province,0,0,3,190,3,1,18,2,8,0,5,0,6,2,0,131,2,6,4,0,5,1,5,4,23,0,3,11,26,37,28,0,3,0,2,0,3,1,2,2,5,1,53,2,100,3,5,14,0,3,1,6,0,8,0,5,1,0,0,1,17,1,8,8,1,2,1,0,2,0,3,9,74,6,0,0,0 22 | Lampang,0,2,11,393,0,4,36,2,1166,7,1,0,134,2,2,10,67,2,0,4,0,179,2,0,2,4,20,26,0,3,10,1,7,0,59,0,1,12,4,9,2,1,37,0,10,143,2,36,0,110,7,0,0,9,8,1,5,0,1,2,2,12,46,4,0,0,45,0,118,0,2,2,9,31,2,1,0 23 | Lamphun,0,0,5,61,0,0,4,1,1248,0,0,0,22,2,1,5,7,0,0,2,201,0,1,0,1,5,2,2,0,0,1,0,4,0,4,0,0,2,0,2,1,0,8,0,1,11,0,1,0,5,2,0,0,4,0,0,1,0,0,1,1,0,2,0,0,0,1,1,14,0,1,1,2,7,1,0,0 24 | Lopburi Province,0,15,155,472,0,0,41,1,15,17,11,0,4,8,0,13,1,15,2,4,7,0,0,1,3,1,2,57,2,1,38,0,26,1,26,0,15,9,4,3,1,0,9,0,35,1,4,116,0,1,2,2,0,9,64,2,4,5,2,2,0,11,26,211,1,2,2,0,3,1,1,2,2,3,3,0,0 25 | Mukdahan,6,1,2,38,0,1,7,3,1,0,0,0,1,0,0,22,0,4,11,2,0,1,0,0,24,0,0,2,0,3,10,68,2,0,0,0,0,1,0,1,0,0,1,0,0,0,2,8,0,0,0,14,0,0,0,0,0,0,0,0,15,0,1,1,0,4,0,0,1,0,0,43,2,0,0,0,19 26 | Maha Sarakham,3,1,27,240,2,88,42,6,24,0,18,1,6,12,1,1383,2,9,587,39,4,1,5,27,0,2,4,17,11,42,187,22,6,1,1,0,4,25,1,16,1,2,5,0,21,0,11,30,0,3,2,531,0,21,2,4,3,2,4,2,23,6,20,12,24,20,5,0,0,0,0,67,94,4,0,0,47 27 | Mae Hong Son,0,0,2,82,0,0,7,0,300,1,1,0,15,0,2,1,1,1,0,0,5,3,0,1,1,0,1,2,0,0,0,1,5,0,0,0,0,3,0,0,0,0,1,0,1,1,0,7,0,2,0,1,0,3,0,0,0,0,0,4,0,0,3,0,0,1,3,1,2,0,0,0,0,4,0,2,0 28 | Nan,0,0,5,164,0,2,9,3,47,2,0,0,31,0,1,3,3,3,2,4,16,1,1,0,1,1,0,6,0,0,6,0,5,0,9,0,4,1,4,3,1,1,15,0,5,91,2,8,0,25,3,0,1,3,3,3,1,2,0,1,1,3,7,0,0,0,4,0,1,0,0,1,1,20,0,0,0 29 | Nonthaburi,2,46,422,21126,3,19,561,110,139,31,15,6,45,58,10,66,10,144,2,16,31,0,66,3,13,1,8,0,3,4,192,5,1002,13,48,2,105,205,21,159,25,2,32,12,34,14,30,3410,2,5,151,6,3,99,41,16,94,131,9,17,5,197,876,103,5,5,7,5,7,2,25,26,22,9,18,0,5 30 | Nong Bua Lam Phu,0,0,1,13,0,0,2,1,0,0,2,1,1,0,0,38,0,0,0,22,1,0,0,0,8,0,1,2,0,17,3,2,0,0,0,0,0,0,0,1,1,0,0,0,3,0,0,3,0,1,0,2,0,2,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,104,0,0,0,1 31 | Nong Khai,1,1,9,116,45,1,22,4,13,0,7,0,4,1,2,145,0,3,3,46,4,1,0,3,44,0,0,6,16,0,36,7,4,0,0,0,0,2,0,2,2,0,1,0,6,2,2,23,0,1,2,8,1,4,0,1,0,0,1,2,17,0,12,5,2,2,0,0,2,0,0,2,1107,0,0,0,3 32 | Nakhon Ratchasima,6,5,325,1889,0,365,272,51,63,6,203,3,11,50,3,519,2,45,25,30,9,0,56,9,166,1,5,213,6,36,0,13,76,4,17,2,187,38,8,46,11,0,23,2,43,4,159,448,0,3,24,59,0,64,14,8,12,16,18,9,13,26,164,506,82,39,3,1,3,2,16,66,51,1,6,0,9 33 | Nakhon Phanom,7,1,3,88,10,0,3,1,5,0,1,0,0,1,0,30,0,0,12,1,0,0,0,55,28,0,1,2,2,7,16,0,2,1,0,0,1,1,2,1,0,0,2,1,3,0,0,6,0,0,0,5,2,0,1,0,2,1,0,0,109,1,4,2,2,6,0,0,0,0,1,19,9,0,0,0,3 34 | Nakhon Pathom,0,15,163,7586,1,12,255,38,63,7,6,6,20,36,10,40,12,434,0,7,11,2,19,1,5,5,3,990,0,5,83,7,0,4,28,0,35,295,3,186,9,0,26,2,13,9,11,470,0,4,868,6,1,34,9,10,119,461,4,9,1,200,354,33,2,4,7,5,2,3,5,12,18,4,8,1,0 35 | Nakhon Si Thammarat,0,0,5,184,0,0,13,0,4,0,0,12,3,2,28,1,0,0,0,0,0,1,1,0,1,0,0,7,0,1,0,0,1,0,0,3,1,6,0,18,28,43,0,8,0,1,0,5,5,0,3,0,3,1,0,119,1,1,0,152,0,1,14,1,0,0,0,9,0,41,0,1,1,1,0,3,0 36 | Nakhon Sawan,0,15,115,549,0,1,68,11,72,126,7,3,17,2,2,7,121,9,0,4,46,6,31,0,2,0,11,52,0,1,15,1,29,0,0,0,13,28,160,14,4,0,147,0,35,23,1,121,1,10,4,0,0,16,96,1,1,1,2,2,0,45,49,11,1,0,17,1,38,1,0,2,0,20,130,0,0 37 | Narathiwat,0,0,0,38,0,2,2,0,1,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,3,37,0,0,0,1,2,0,41,0,0,0,5,0,0,4,0,0,0,1,1,0,0,1,0,0,0,0,21,0 38 | Nakhon Nayok,0,5,63,1172,0,5,60,30,17,3,4,0,3,10,0,22,0,14,3,7,0,0,11,0,1,0,3,109,0,2,172,0,48,1,9,1,0,19,0,16,2,0,1,0,3,2,98,566,0,1,21,2,1,20,4,4,5,8,15,5,1,10,101,64,1,1,0,0,1,0,4,6,2,2,1,0,0 39 | Phetchaburi,2,6,47,2414,0,2,96,20,40,3,4,12,14,21,3,6,2,99,1,3,9,0,12,1,21,1,4,230,0,5,47,3,297,10,14,0,16,0,3,2471,5,1,5,0,10,5,4,228,2,1,445,3,3,11,9,6,290,379,3,17,1,35,159,14,0,1,1,2,5,2,12,7,7,5,1,0,0 40 | Phichit,0,2,16,86,0,0,7,3,15,9,1,1,6,0,0,1,8,2,0,2,2,0,10,0,0,0,2,16,0,0,2,1,2,0,151,0,3,5,0,3,0,0,189,0,20,6,1,16,0,2,0,0,0,1,15,0,0,1,1,0,1,1,5,1,1,0,9,0,1,0,0,4,1,8,3,0,0 41 | Prachuap Khiri Khan,0,1,56,1528,0,2,68,12,31,3,3,77,13,10,13,22,1,53,1,3,10,0,4,0,13,2,1,154,0,3,36,1,155,17,14,2,16,2535,2,0,18,4,9,4,10,5,3,113,0,5,163,3,3,17,3,7,115,200,2,41,4,27,130,11,1,2,0,4,3,4,3,9,11,2,0,2,0 42 | Phuket,0,0,18,622,0,0,23,2,75,0,0,7,11,2,645,5,1,6,0,5,0,0,0,0,2,2,0,26,0,2,13,0,5,31,1,2,1,4,0,16,0,9,8,643,25,0,0,17,2,0,11,0,6,4,0,79,2,4,0,147,1,1,168,1,1,0,2,3,0,21,6,2,9,0,1,3,0 43 | Phatthalung,0,0,5,33,0,1,1,0,1,0,0,2,1,0,26,1,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,2,37,0,3,0,1,0,5,3,0,0,3,1,0,0,0,4,0,2,0,1,0,0,158,0,1,0,13,0,0,3,1,0,0,0,5,0,54,0,0,0,0,0,4,0 44 | Phitsanulok,0,6,44,352,0,4,40,4,97,13,5,2,55,6,2,26,87,16,2,50,36,9,10,1,3,1,22,42,1,3,17,2,18,1,139,0,4,11,187,12,7,0,0,0,181,89,1,37,0,22,4,0,0,13,21,2,4,2,4,1,1,12,27,4,0,1,165,1,39,1,3,6,7,149,9,0,2 45 | Phang Nga,0,0,6,87,0,0,6,1,16,0,0,9,5,1,178,1,0,0,0,1,1,0,0,0,0,1,1,2,0,0,3,0,3,12,0,0,0,2,0,8,665,1,0,0,5,0,1,5,2,1,5,0,13,1,0,15,2,3,0,41,0,1,11,1,1,0,0,8,2,12,1,0,3,0,0,0,0 46 | Phetchabun,0,0,32,377,0,4,50,7,51,1,20,1,15,7,20,69,7,5,4,86,9,2,46,2,14,4,6,36,2,9,31,1,15,4,27,1,2,6,23,14,37,1,183,7,0,13,4,45,0,8,7,4,1,7,4,5,2,3,7,11,1,10,31,35,2,2,12,3,5,3,3,8,13,17,1,0,3 47 | Phrae,0,2,10,108,0,2,10,2,191,5,0,0,82,1,1,3,2,2,1,3,158,15,1,0,0,3,87,15,0,2,3,0,6,0,14,0,2,5,5,6,1,1,72,0,8,0,0,16,0,68,1,1,0,2,5,0,1,0,1,0,0,0,7,0,1,0,16,0,6,0,1,1,0,97,1,0,0 48 | Prachinburi,0,2,16,313,0,9,104,91,3,1,1,2,0,23,0,10,1,3,0,4,5,1,1,0,3,0,1,25,1,1,108,0,8,0,1,0,113,5,0,3,1,0,1,2,6,0,0,55,0,0,4,2,0,34,1,2,2,8,50,3,1,2,35,14,4,0,0,0,1,0,5,4,2,0,1,0,0 49 | Pathum Thani,2,79,1690,18366,5,39,708,142,166,44,28,11,56,87,8,107,30,153,5,15,51,2,108,2,36,4,11,3413,3,18,440,9,408,7,124,2,483,208,20,159,17,3,44,8,53,21,49,0,2,11,126,10,3,153,70,26,82,86,19,19,8,124,965,279,16,21,15,3,14,8,15,41,31,10,26,0,3 50 | Pattani,0,0,0,28,0,0,1,0,3,0,0,3,1,0,6,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,1,5,1,27,0,0,0,1,3,6,0,2,0,0,0,1,0,0,0,0,0,0,0,141,0,1,0,5,0,0,1,1,0,0,0,1,0,4,0,0,0,0,0,54,0 51 | Phayao,0,3,6,65,0,1,12,2,180,3,3,1,475,1,0,5,5,2,0,5,129,7,1,0,0,4,25,5,0,4,0,0,2,0,10,0,0,4,5,2,1,0,24,1,6,55,0,10,0,0,4,0,0,3,2,1,0,0,0,0,0,2,3,2,0,0,18,0,9,1,1,1,2,19,0,0,0 52 | Ratchaburi,0,5,41,1742,0,2,90,12,44,5,1,2,10,20,6,6,1,311,1,1,4,1,5,0,1,2,3,155,0,2,26,0,967,0,7,0,13,514,0,187,4,3,2,4,8,1,3,109,0,1,0,1,0,20,4,4,553,153,0,4,2,40,84,12,2,1,1,0,2,1,3,1,5,0,1,0,0 53 | Roi Et,7,0,5,130,1,18,20,2,5,0,4,0,1,5,0,208,0,8,91,16,0,0,1,16,478,0,1,9,1,8,75,10,4,0,2,0,3,5,0,5,0,0,0,0,4,1,2,10,0,1,0,0,0,5,0,2,3,1,3,0,7,1,5,3,15,20,0,0,0,0,0,42,15,0,0,0,48 54 | Ranong,0,0,2,35,0,0,3,0,4,0,0,25,1,1,3,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,0,2,3,2,0,0,1,3,0,9,8,0,0,9,1,0,0,3,0,0,1,0,0,0,0,2,1,2,1,6,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 55 | Rayong,0,3,37,1168,0,6,1026,219,50,8,0,0,12,475,1,25,5,8,3,2,8,0,6,1,9,1,2,86,1,0,53,3,44,1,13,1,33,20,2,15,4,0,4,0,11,4,32,146,0,2,13,5,0,0,2,4,6,10,14,5,0,10,140,14,8,12,0,1,1,2,75,4,11,4,2,0,1 56 | Sing Buri,1,66,141,224,0,0,25,5,7,41,0,0,2,2,1,3,17,1,0,1,9,0,70,0,0,0,2,38,0,0,7,0,15,0,86,0,2,3,13,2,1,0,14,0,4,3,1,67,0,1,3,0,0,4,0,1,1,2,0,2,0,16,21,12,1,0,4,0,3,0,0,0,1,4,14,0,0 57 | Songkhla,0,0,1,403,0,0,12,3,25,1,0,18,9,1,188,2,0,4,0,6,2,1,3,0,3,1,2,22,0,0,3,0,11,128,1,52,3,7,0,19,83,193,2,20,5,0,1,11,147,0,2,1,4,6,0,0,3,0,1,49,0,2,49,0,0,0,1,152,1,81,2,1,2,0,0,66,1 58 | Samut Songkhram,0,5,15,788,0,2,51,4,6,3,1,3,1,5,2,3,0,31,1,2,1,1,5,0,2,2,3,80,0,0,12,0,104,1,5,0,9,276,0,130,1,0,1,3,3,0,3,74,0,0,485,0,0,6,2,5,0,259,2,1,1,9,85,3,0,0,2,0,1,1,1,2,0,0,0,0,0 59 | Samut Sakhon,0,6,35,2261,1,3,57,8,8,2,0,0,5,6,0,7,1,24,1,0,2,1,5,2,0,3,1,154,0,0,19,2,437,1,1,0,14,155,0,61,4,1,4,2,5,2,2,118,0,1,101,2,1,16,4,2,145,0,2,8,1,14,175,12,3,1,0,0,1,0,2,3,2,0,2,0,0 60 | Sa Kaeo,0,0,8,163,0,25,35,49,1,1,2,0,2,49,0,1,1,0,0,0,0,0,2,0,1,0,0,9,0,0,7,0,0,1,1,0,14,6,1,2,0,0,2,0,4,1,52,18,0,0,1,3,0,10,1,1,1,3,0,0,0,0,15,6,1,3,1,1,1,0,7,2,1,0,0,0,0 61 | Surat Thani,0,1,9,511,0,1,29,7,64,0,0,93,10,4,172,7,0,13,0,2,2,1,3,0,1,5,1,16,0,0,6,0,6,145,0,2,5,13,1,43,130,13,0,59,13,1,2,14,1,0,6,0,9,6,0,59,0,4,0,0,0,4,70,0,1,1,1,4,0,15,3,1,4,0,0,3,0 62 | Sakon Nakhon,4,0,1,67,15,4,4,0,3,0,1,0,2,2,1,75,0,2,27,15,1,0,0,14,28,1,1,3,2,23,13,109,1,0,0,0,0,3,0,2,2,1,1,0,2,0,2,7,0,0,1,6,0,1,0,1,2,1,1,0,0,0,3,2,2,1,1,1,1,0,0,11,108,0,0,0,4 63 | Suphan Buri,0,74,136,740,0,3,49,2,21,32,0,1,8,8,2,8,4,113,0,3,7,1,16,0,5,1,4,256,0,0,21,0,194,2,27,0,4,30,1,25,4,0,9,0,6,1,3,113,0,1,34,1,0,6,19,1,7,10,0,2,0,0,54,12,1,0,2,0,1,0,2,1,2,4,20,0,0 64 | Samut Prakan,3,11,208,25333,0,18,1388,376,245,29,6,4,112,94,28,81,9,98,3,8,40,2,43,4,14,4,9,940,0,10,158,2,364,23,52,4,115,193,3,168,90,0,22,8,36,6,36,972,2,7,92,11,2,163,23,48,83,163,19,67,4,56,0,90,10,12,14,3,11,9,28,49,47,13,6,3,1 65 | Saraburi,0,11,383,956,1,19,55,23,7,7,8,0,3,12,1,24,6,8,1,4,5,1,184,0,9,0,0,119,0,1,406,2,34,2,15,0,70,18,2,12,4,0,3,1,24,0,14,249,0,0,7,5,0,14,10,1,5,8,5,3,1,12,71,0,4,3,0,1,2,0,2,1,3,3,2,0,1 66 | Surin,1,0,11,94,0,94,14,3,6,1,2,0,9,5,0,23,0,3,3,5,0,0,0,1,15,0,0,8,0,1,71,0,4,0,0,0,3,2,0,2,1,0,0,0,3,0,2,13,0,0,4,25,0,5,0,0,5,0,3,4,1,1,11,4,0,75,0,0,2,0,2,43,2,0,2,0,2 67 | Sisaket,4,0,5,113,2,37,14,5,10,0,5,0,0,4,1,29,0,0,2,1,2,0,2,6,23,0,0,6,0,1,34,3,3,0,0,0,2,2,0,2,1,0,1,2,1,1,3,29,0,0,1,11,0,7,1,0,1,0,3,0,2,0,12,8,85,0,1,0,1,0,2,491,7,1,0,0,14 68 | Sukhothai,0,3,12,81,1,2,13,2,54,2,1,0,10,1,0,4,35,6,0,2,36,5,7,0,4,2,3,9,1,0,1,1,5,0,17,0,1,2,6,3,0,0,163,0,8,13,0,10,0,7,2,1,0,1,7,0,2,2,0,1,0,4,15,0,0,0,0,1,24,0,0,1,0,39,1,0,0 69 | Satun,0,0,2,57,0,0,4,0,7,0,0,1,2,0,27,0,0,0,0,0,0,1,0,0,0,0,0,6,0,0,0,0,2,6,0,3,0,6,0,2,4,6,0,7,3,0,0,3,9,0,2,0,0,0,0,140,2,0,0,9,0,1,5,1,0,0,0,0,1,12,1,0,1,0,0,2,0 70 | Tak,0,3,11,107,0,1,8,1,87,3,1,1,5,5,1,2,87,3,0,1,96,13,2,0,0,5,1,12,0,0,3,1,5,0,36,1,1,7,1,7,0,0,38,1,3,5,0,14,0,1,4,0,1,2,12,0,1,1,1,2,2,8,8,4,2,0,29,0,0,0,0,3,3,2,2,0,0 71 | Trang,0,0,24,88,0,0,1,0,4,0,0,20,3,1,99,2,0,0,0,0,0,1,0,0,0,0,0,6,0,0,1,0,1,33,0,4,0,3,0,2,16,56,1,7,3,0,0,2,4,0,2,0,1,0,0,64,0,0,0,18,1,3,4,1,0,0,0,14,0,0,1,1,0,0,0,2,0 72 | Trat,0,1,5,280,0,2,75,27,21,0,1,2,3,166,1,8,0,2,0,4,0,1,2,0,0,2,0,26,0,0,18,0,8,3,1,0,5,16,0,4,3,0,3,0,5,0,1,15,0,0,1,1,0,63,1,3,1,2,9,2,1,1,32,4,1,1,0,0,1,1,0,3,1,0,0,0,0 73 | Ubon Ratchathani,80,0,18,572,2,57,59,4,24,0,5,2,3,8,5,129,0,1,11,2,3,1,3,56,79,0,1,29,0,4,83,22,7,1,2,0,4,10,1,8,4,0,5,0,6,0,5,45,0,1,3,63,0,16,1,2,4,4,5,2,10,1,72,9,43,548,0,0,2,2,7,0,12,0,1,0,94 74 | Udon Thani,3,1,3,368,32,3,34,3,50,2,14,1,11,6,1,555,0,6,28,87,1,3,3,3,88,0,1,23,127,963,68,20,11,1,0,0,2,4,0,7,10,0,10,0,20,2,3,27,0,1,6,13,0,14,0,4,2,1,0,5,115,3,53,3,1,4,1,0,1,0,1,10,0,1,0,0,2 75 | Uttaradit,0,2,8,85,0,1,12,0,38,0,1,1,15,1,0,6,4,2,1,3,26,6,4,0,0,3,18,8,0,1,3,0,6,1,13,0,0,3,12,5,0,0,127,0,11,111,0,10,0,10,0,0,0,9,11,0,1,0,0,0,0,2,12,1,0,1,36,1,6,0,0,2,1,0,0,0,1 76 | Uthai Thani,0,7,21,90,0,0,7,1,4,39,1,0,0,1,0,1,5,2,0,1,0,3,5,0,0,0,0,10,0,0,5,0,11,0,118,0,0,0,2,2,1,0,4,1,3,0,1,13,0,0,2,0,0,2,18,0,1,1,0,0,0,19,3,2,2,0,3,0,5,0,0,0,1,0,0,0,0 77 | Yala,0,0,0,25,0,0,0,0,3,1,0,1,1,0,2,1,0,0,0,0,1,0,0,0,1,1,0,3,0,0,0,0,0,4,0,21,0,0,0,2,5,2,0,1,0,0,0,1,61,0,0,0,1,0,0,55,0,0,0,0,0,0,1,0,0,0,0,5,0,3,0,0,0,0,0,0,0 78 | Yasothon,14,0,2,20,0,8,4,1,0,0,2,0,0,1,0,18,0,1,5,2,0,0,0,13,36,0,0,6,1,0,12,1,0,0,0,0,0,0,1,1,0,0,1,0,1,0,0,7,0,0,0,41,0,1,0,0,0,0,0,0,0,0,1,2,4,8,0,0,0,0,0,71,1,0,0,0,0 79 | -------------------------------------------------------------------------------- /TwitData/Processed/TH_Province_Connection_TwoWay_21Days.csv: -------------------------------------------------------------------------------- 1 | ,Amnat Charoen,Ang Thong,Phra Nakhon Si Ayutthaya,Bangkok,Bueng Kan,Buriram,Chonburi,Chachoengsao,Chiang Mai,Chai Nat,Chaiyaphum,Chumphon,Chiang Rai,Chanthaburi,Krabi,Khon Kaen,Kamphaeng Phet,Kanchanaburi,Kalasin,Loei Province,Lampang,Lamphun,Lopburi Province,Mukdahan,Maha Sarakham,Mae Hong Son,Nan,Nonthaburi,Nong Bua Lam Phu,Nong Khai,Nakhon Ratchasima,Nakhon Phanom,Nakhon Pathom,Nakhon Si Thammarat,Nakhon Sawan,Narathiwat,Nakhon Nayok,Phetchaburi,Phichit,Prachuap Khiri Khan,Phuket,Phatthalung,Phitsanulok,Phang Nga,Phetchabun,Phrae,Prachinburi,Pathum Thani,Pattani,Phayao,Ratchaburi,Roi Et,Ranong,Rayong,Sing Buri,Songkhla,Samut Songkhram,Samut Sakhon,Sa Kaeo,Surat Thani,Sakon Nakhon,Suphan Buri,Samut Prakan,Saraburi,Surin,Sisaket,Sukhothai,Satun,Tak,Trang,Trat,Ubon Ratchathani,Udon Thani,Uttaradit,Uthai Thani,Yala,Yasothon 2 | Amnat Charoen,0,0,0,23,0,2,3,0,3,0,0,0,0,0,0,5,0,1,1,3,0,0,0,10,4,0,0,3,0,0,4,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,2,0,1,0,0,0,0,0,0,3,0,1,1,0,5,0,0,0,0,0,74,1,0,0,0,7 3 | Ang Thong,0,0,325,228,0,0,11,3,6,3,1,0,4,1,2,2,1,4,0,0,3,0,17,0,0,0,0,49,0,0,11,0,20,0,19,0,1,2,1,5,0,0,4,0,3,1,0,74,0,0,4,1,0,5,64,0,2,5,1,0,0,44,19,13,0,0,0,0,1,0,0,1,0,4,9,0,0 4 | Phra Nakhon Si Ayutthaya,0,304,0,3589,1,13,346,48,78,41,8,16,15,35,20,25,20,59,6,6,17,3,135,2,16,2,3,449,1,5,234,3,174,3,110,2,67,61,17,65,19,2,33,9,35,12,21,1846,0,4,34,4,3,54,125,3,37,38,14,18,2,185,254,374,7,5,16,1,7,25,11,11,8,13,24,0,2 5 | Bangkok,15,271,3691,0,16,244,9226,2039,2576,154,160,135,850,957,448,877,152,1804,64,233,393,56,603,36,254,108,230,24607,11,106,2424,107,8651,209,619,41,1561,2986,115,2329,671,25,453,107,507,110,392,20760,42,69,1990,168,49,1653,292,456,1114,2335,238,565,73,953,28519,1154,101,141,108,76,138,110,353,562,477,87,105,26,42 6 | Bueng Kan,0,0,0,17,0,0,4,1,0,0,1,1,0,0,1,6,0,0,2,1,0,0,0,0,1,0,0,3,0,51,3,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,0,18,0,0,2,0,1,0,0,1,0,1,0,31,0,0,0,0 7 | Buriram,2,1,18,219,0,0,33,9,18,1,10,0,2,18,1,76,2,4,4,1,6,1,3,3,81,0,1,27,0,3,351,0,12,1,0,2,5,6,0,3,1,0,3,1,6,2,10,28,0,1,2,17,0,5,1,0,1,4,14,2,3,2,13,16,108,27,3,1,0,0,4,42,4,0,0,0,7 8 | Chonburi,1,19,300,8196,2,48,0,1052,173,27,12,10,52,330,21,89,11,128,9,26,39,9,41,7,31,11,12,549,1,15,295,12,259,12,59,1,65,126,9,89,39,2,44,5,70,10,117,788,0,13,85,19,2,1063,22,23,48,82,39,28,7,52,1523,58,20,19,15,9,6,3,72,53,37,11,8,1,2 9 | Chachoengsao,0,3,69,2051,0,8,701,0,14,1,2,0,7,70,3,12,2,16,1,1,3,1,8,0,4,0,1,149,0,3,59,2,45,3,9,0,41,26,4,17,0,0,7,0,7,0,74,179,0,0,16,2,0,137,3,3,10,15,43,5,0,7,408,15,3,3,1,0,2,2,9,4,5,1,1,0,0 10 | Chiang Mai,0,5,97,2638,0,17,166,16,0,7,10,7,1579,26,103,70,95,39,4,14,1339,1660,21,4,24,286,72,150,0,9,64,5,53,7,99,2,21,45,14,54,62,2,86,13,51,214,9,154,3,189,43,7,0,55,18,22,14,11,3,67,10,25,365,19,7,13,75,10,132,6,14,23,46,55,7,3,2 11 | Chai Nat,0,11,47,147,0,0,23,1,6,0,1,0,2,3,0,0,9,4,0,1,4,0,18,0,0,0,1,20,0,0,4,0,8,0,121,0,0,6,10,1,0,0,19,0,1,1,0,34,0,0,4,0,0,8,52,0,1,5,0,0,0,46,24,6,1,0,2,0,8,0,0,0,1,3,39,1,0 12 | Chaiyaphum,0,0,11,133,0,9,19,2,14,0,0,0,2,3,0,154,1,3,3,13,2,2,13,1,21,0,0,10,1,8,193,3,3,0,5,0,1,4,1,1,0,0,8,1,22,0,2,19,0,0,1,3,0,5,1,0,1,1,2,1,2,1,3,16,4,3,1,0,0,0,0,6,13,0,0,0,0 13 | Chumphon,0,1,11,125,0,0,4,0,8,0,0,0,3,0,9,1,0,1,0,0,0,0,0,0,1,0,0,9,0,0,1,1,8,21,1,0,1,15,1,95,8,6,0,10,2,0,1,3,3,1,1,1,26,0,0,14,7,5,0,74,1,0,7,2,0,0,0,1,0,19,1,1,0,1,0,0,0 14 | Chiang Rai,1,2,22,1018,0,4,75,4,1544,3,0,3,0,6,16,20,11,12,1,6,171,34,4,0,2,26,37,49,0,6,15,2,13,6,28,1,6,15,13,21,14,1,57,7,14,84,4,56,1,612,12,4,0,17,6,6,3,1,1,5,1,12,164,4,7,0,20,2,5,0,8,3,10,27,2,0,0 15 | Chanthaburi,1,1,35,801,0,11,299,122,16,1,0,2,4,0,4,13,2,12,3,4,7,2,7,0,9,1,2,75,0,0,35,4,42,0,6,0,8,25,0,6,4,0,3,1,4,0,18,69,0,1,25,3,2,357,3,2,5,14,43,4,2,7,98,19,2,5,3,0,2,0,199,9,7,1,2,0,0 16 | Krabi,0,0,29,450,0,1,14,5,127,0,1,5,13,0,0,4,0,6,0,1,1,1,3,0,3,9,0,8,0,1,3,0,11,33,4,7,1,9,1,7,794,29,1,174,19,3,0,9,4,0,8,0,4,4,0,173,5,2,1,196,0,1,44,0,0,0,1,32,1,125,3,0,3,0,0,1,0 17 | Khon Kaen,4,1,40,878,16,86,87,17,71,0,191,1,20,15,4,0,2,17,298,178,7,8,8,37,1299,2,4,62,55,196,563,42,42,6,6,0,27,15,3,22,5,0,24,4,90,3,12,98,1,6,8,253,0,44,2,1,6,4,3,9,79,7,103,33,27,51,1,0,6,1,6,183,637,5,1,2,24 18 | Kamphaeng Phet,0,3,23,154,0,2,17,3,72,9,0,0,4,4,1,2,0,4,0,0,53,6,5,1,0,2,3,12,0,1,11,0,9,0,134,0,1,8,6,3,0,0,107,0,7,5,1,18,0,8,1,0,0,7,14,1,2,1,0,0,0,7,11,4,1,0,25,0,74,0,1,1,0,2,5,0,0 19 | Kanchanaburi,0,3,57,1491,1,4,127,12,35,2,0,1,8,10,7,16,2,0,0,4,6,3,11,3,6,3,3,177,2,2,42,1,471,2,13,1,15,80,1,48,9,0,8,2,4,3,3,142,0,0,378,8,1,24,1,5,30,34,3,12,3,115,108,8,4,0,4,0,4,3,6,4,3,2,1,0,2 20 | Kalasin,0,1,4,54,0,1,7,2,1,0,2,0,1,0,0,260,0,1,0,4,0,0,1,18,582,1,0,4,1,6,25,18,1,0,0,0,2,0,0,1,0,0,0,0,4,0,2,9,0,0,0,85,0,6,0,0,4,0,0,0,15,1,5,4,1,2,0,0,0,0,1,8,31,0,0,0,6 21 | Loei Province,0,0,3,207,3,1,19,2,9,0,5,0,6,2,0,146,2,8,5,0,5,1,5,4,28,0,4,14,26,41,30,1,5,1,2,0,3,2,2,2,5,1,56,2,102,3,5,15,0,4,1,6,0,9,0,5,1,0,0,1,18,1,9,8,1,2,1,0,2,0,3,9,81,6,0,0,0 22 | Lampang,0,4,14,433,0,4,40,2,1268,7,1,0,140,2,3,10,69,3,0,4,0,182,2,0,2,4,23,29,0,3,12,2,8,1,61,0,1,13,4,11,2,1,38,0,10,147,2,39,0,118,7,0,0,9,9,1,5,1,1,2,3,12,48,4,0,0,47,0,120,0,2,2,9,31,2,1,0 23 | Lamphun,0,0,5,76,0,0,4,1,1355,0,0,0,25,2,1,5,7,0,0,2,209,0,1,0,1,5,2,2,0,0,2,0,4,0,6,0,0,2,0,2,1,0,11,0,1,13,0,2,0,5,2,0,0,4,0,0,1,0,0,1,1,0,2,0,0,0,1,1,14,0,2,2,2,7,1,0,0 24 | Lopburi Province,0,15,160,526,0,0,45,1,17,18,12,0,5,8,1,14,1,17,2,4,7,0,0,1,5,1,2,60,2,1,42,0,29,1,28,0,15,9,4,4,1,0,9,0,35,1,4,126,0,1,2,2,0,10,66,2,4,5,2,2,0,12,29,223,1,2,2,0,3,1,1,2,2,3,3,0,0 25 | Mukdahan,6,1,4,41,0,2,7,3,1,0,0,0,1,0,0,28,0,4,12,2,0,1,0,0,27,0,0,3,0,4,11,71,2,0,0,0,0,1,0,1,0,0,1,0,0,0,2,8,0,0,0,16,0,0,0,1,0,0,0,0,21,0,1,1,0,4,0,0,1,0,0,47,2,0,0,0,20 26 | Maha Sarakham,3,1,27,265,3,98,49,6,24,0,18,1,6,14,2,1454,2,11,605,41,5,1,5,29,0,2,4,18,11,50,198,29,6,1,1,0,4,27,1,16,1,2,5,0,24,1,11,32,0,3,3,563,0,23,2,4,4,2,5,2,29,7,23,14,26,21,5,0,0,0,0,76,105,4,0,0,49 27 | Mae Hong Son,0,0,2,92,0,0,8,0,313,1,1,0,16,0,3,1,1,1,0,0,5,3,1,1,1,0,1,2,0,0,0,2,5,0,0,0,0,3,0,0,1,0,1,0,1,1,0,7,0,2,0,1,0,4,0,0,0,0,0,4,0,0,3,0,0,1,3,1,2,0,0,0,0,4,0,2,0 28 | Nan,0,0,5,185,0,2,10,3,59,2,1,0,36,0,1,3,3,3,2,4,16,1,1,0,1,1,0,7,0,0,7,0,5,0,9,0,4,1,4,4,1,1,18,0,5,95,2,11,0,27,3,0,1,3,3,3,1,2,0,1,1,3,8,0,0,0,4,0,1,0,0,1,1,21,0,0,0 29 | Nonthaburi,2,51,440,22667,4,20,605,113,151,32,15,6,50,62,11,74,13,147,2,18,32,2,68,3,14,2,10,0,3,5,212,6,1039,15,53,2,111,217,21,169,32,2,34,14,36,15,31,3508,2,6,160,6,3,109,43,20,98,134,9,21,5,206,908,107,6,6,7,5,7,2,27,29,23,9,20,0,5 30 | Nong Bua Lam Phu,0,0,1,15,0,0,2,1,0,0,2,1,1,0,0,46,0,0,0,22,1,0,0,0,10,0,1,3,0,18,3,2,0,0,0,0,0,0,0,1,1,0,0,0,4,0,0,3,0,1,0,3,0,2,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,115,0,0,0,1 31 | Nong Khai,1,1,9,126,46,2,22,4,15,0,8,0,6,1,2,163,0,3,3,48,4,1,1,4,54,0,0,6,17,0,38,9,4,0,0,0,0,2,0,2,2,0,1,0,6,2,3,25,0,1,2,8,1,4,0,1,0,0,1,2,17,0,14,5,3,2,0,0,2,0,0,2,1152,0,0,0,3 32 | Nakhon Ratchasima,6,7,341,2131,0,382,296,51,73,6,216,3,12,54,4,564,4,48,28,30,9,0,60,9,185,2,5,230,6,38,0,15,85,5,19,2,190,48,8,50,13,0,24,2,45,5,161,479,0,4,28,64,0,67,15,8,13,18,19,9,13,27,176,519,83,40,4,1,3,2,16,75,55,1,6,0,9 33 | Nakhon Phanom,7,1,3,97,11,0,5,1,6,0,1,0,0,1,0,32,0,0,12,1,0,0,1,58,32,0,1,2,2,7,19,0,3,1,1,0,1,1,2,1,0,0,2,1,3,0,0,6,0,0,0,5,2,1,1,0,2,1,0,0,117,1,6,2,3,6,0,0,0,0,1,21,11,0,0,0,4 34 | Nakhon Pathom,0,18,172,8183,1,12,279,39,65,7,6,8,22,38,13,42,12,448,0,8,11,3,19,2,5,5,5,1026,0,5,88,7,0,5,33,0,38,313,3,196,9,0,26,3,16,9,11,495,0,4,932,6,1,35,9,11,121,469,4,11,1,206,373,36,2,4,7,5,3,3,6,13,18,4,10,2,0 35 | Nakhon Si Thammarat,0,0,5,200,0,0,13,0,4,0,0,14,3,2,31,1,0,2,0,0,0,1,1,0,1,0,0,10,0,1,0,0,2,0,0,5,1,6,0,18,31,44,0,9,0,1,0,6,5,0,3,0,3,1,0,128,1,1,0,158,0,1,14,2,0,0,0,11,0,42,0,1,1,1,0,3,0 36 | Nakhon Sawan,0,15,116,612,0,1,71,11,79,131,7,3,20,4,3,8,124,10,0,5,51,7,33,0,2,0,11,54,0,2,16,1,31,1,0,1,13,28,166,16,4,0,157,0,38,25,1,129,1,10,4,1,0,17,96,1,1,1,2,2,0,45,50,12,1,0,17,1,40,1,0,3,0,21,134,0,0 37 | Narathiwat,0,0,0,38,0,2,2,0,1,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,4,38,0,0,0,1,2,0,42,0,0,0,5,0,0,4,0,0,0,1,3,0,0,1,0,0,0,0,24,0 38 | Nakhon Nayok,0,5,67,1307,0,5,67,32,20,3,5,0,4,12,0,23,0,14,3,7,0,0,12,0,1,0,3,112,0,2,174,0,55,1,10,1,0,22,0,18,2,0,1,0,3,2,100,583,0,1,23,4,1,23,4,4,6,8,16,5,1,10,106,66,1,1,0,0,1,0,4,7,2,2,1,0,0 39 | Phetchaburi,2,6,53,2672,0,3,109,21,47,3,4,13,15,23,3,7,4,104,1,3,11,0,14,1,22,3,4,241,0,5,53,4,326,11,18,0,18,0,4,2513,7,1,7,1,11,6,4,239,2,1,476,3,3,14,9,8,294,382,3,19,2,39,172,16,1,1,1,2,5,2,12,11,8,6,1,0,0 40 | Phichit,0,2,17,102,0,0,8,3,17,10,1,1,6,0,0,1,9,2,0,2,2,0,11,0,1,0,2,17,0,0,3,1,2,0,163,0,3,5,0,3,0,0,199,0,21,6,1,17,0,2,1,0,0,1,15,0,0,1,1,0,1,1,6,1,1,0,9,0,2,0,0,4,1,9,4,0,0 41 | Prachuap Khiri Khan,0,2,60,1787,0,4,80,15,34,4,3,81,18,10,13,24,4,57,1,3,11,1,5,0,14,2,1,169,0,4,39,1,172,19,15,2,16,2598,3,0,19,5,12,5,10,7,5,127,0,5,184,5,4,21,3,8,116,205,2,41,4,28,140,15,1,2,0,5,4,5,3,9,11,2,0,2,0 42 | Phuket,0,0,18,677,0,0,27,2,82,0,0,7,14,2,667,5,1,7,0,5,0,0,0,0,2,2,0,28,0,3,13,0,7,32,1,2,3,4,0,16,0,9,8,650,25,0,1,19,2,0,11,0,7,4,0,85,2,4,0,155,1,1,171,1,1,0,2,3,0,23,6,2,10,0,1,3,0 43 | Phatthalung,0,0,5,38,0,1,1,0,2,0,0,2,1,0,27,1,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,2,39,0,3,0,1,0,5,3,0,0,3,1,0,0,0,4,0,2,0,1,0,0,171,0,1,0,13,0,0,3,1,0,0,0,5,0,55,0,0,0,0,0,5,0 44 | Phitsanulok,0,6,49,411,0,5,47,4,114,13,5,2,57,6,3,28,97,16,3,52,38,9,10,1,4,1,23,47,1,3,19,2,18,1,142,0,4,12,195,12,7,0,0,0,183,91,1,38,0,23,4,0,0,14,21,2,4,2,4,1,1,12,30,4,0,1,174,1,41,1,3,6,8,154,10,0,2 45 | Phang Nga,0,0,7,97,0,0,6,1,18,0,0,10,5,1,181,3,0,0,0,1,1,0,0,0,0,1,1,4,0,0,3,0,3,12,0,0,0,2,0,8,688,1,0,0,5,0,2,6,2,1,5,0,13,1,0,19,2,3,0,46,0,1,11,2,1,0,0,8,2,12,1,1,3,0,0,0,0 46 | Phetchabun,0,0,34,430,0,4,57,9,55,1,20,1,18,8,21,71,7,5,4,88,10,2,46,2,17,6,6,42,2,9,36,1,16,4,31,1,2,6,26,14,40,1,188,7,0,13,4,49,0,8,8,4,1,8,4,8,3,4,7,14,2,10,34,36,2,2,12,3,5,5,5,8,14,18,1,0,3 47 | Phrae,0,2,10,124,0,2,11,2,214,5,0,0,87,2,1,3,4,2,1,3,163,16,1,0,0,3,89,16,0,2,4,0,6,0,14,0,2,5,5,7,1,1,75,0,8,0,0,17,0,70,2,2,0,2,5,0,1,0,1,0,0,0,8,0,1,0,16,0,7,0,1,1,0,99,1,0,0 48 | Prachinburi,0,2,18,364,0,10,109,94,3,1,1,2,0,23,0,12,1,3,0,5,5,1,1,0,4,0,1,28,1,1,114,0,8,0,1,0,114,5,0,3,1,0,1,2,6,0,0,58,0,0,5,2,0,39,1,2,2,9,51,3,1,2,36,16,4,0,0,0,1,0,5,5,2,0,2,0,0 49 | Pathum Thani,2,83,1793,19539,5,42,759,145,176,48,30,12,66,89,12,113,33,164,5,17,58,3,119,2,40,5,12,3499,3,19,464,13,434,10,128,2,507,229,22,173,20,3,47,8,56,23,55,0,2,11,136,12,4,165,71,29,83,88,20,22,9,130,1018,290,17,22,15,5,14,8,17,45,34,11,28,0,3 50 | Pattani,0,0,0,34,0,0,1,0,3,0,0,3,1,0,6,1,1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,1,6,1,30,0,0,0,1,4,6,0,2,0,0,0,1,0,0,0,0,0,0,0,150,0,1,0,5,0,0,1,1,0,0,0,2,1,5,0,0,0,0,0,57,0 51 | Phayao,0,3,6,73,0,1,15,3,202,3,4,1,517,1,0,7,7,2,0,5,135,7,1,0,0,4,25,5,0,4,1,0,3,0,11,0,0,4,5,3,1,0,27,1,6,58,0,11,0,0,5,0,0,3,2,1,0,0,0,0,0,2,3,2,0,0,18,1,9,1,1,1,2,19,0,0,0 52 | Ratchaburi,1,5,48,1890,0,2,97,16,49,5,1,2,11,21,7,6,1,325,1,1,5,1,5,0,2,2,3,164,0,2,29,0,995,0,8,0,14,537,0,191,4,3,2,4,9,1,3,117,0,1,0,2,1,21,4,4,561,156,0,5,2,41,89,12,2,3,2,0,2,1,3,1,5,0,1,0,0 53 | Roi Et,7,0,5,152,1,18,23,3,5,0,5,0,1,5,0,231,0,8,93,16,0,0,1,16,531,0,1,9,1,8,80,10,4,0,2,0,3,5,0,6,0,0,0,0,4,1,2,10,0,1,0,0,0,5,0,2,3,1,5,1,7,1,6,3,15,20,0,0,0,0,1,48,15,0,0,0,50 54 | Ranong,0,0,2,40,0,0,3,0,4,0,0,25,1,1,3,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,0,2,3,4,0,0,1,3,0,9,8,0,0,9,1,0,0,4,0,0,1,0,0,0,0,2,1,2,1,7,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1 55 | Rayong,0,3,40,1336,0,10,1078,222,59,8,1,0,14,489,2,29,7,10,4,5,9,0,6,1,13,2,3,95,1,1,56,3,47,1,16,1,34,20,2,17,5,0,7,0,12,4,34,160,0,2,13,6,0,0,2,5,6,11,14,6,0,12,148,14,10,12,0,2,1,2,76,6,14,4,2,0,2 56 | Sing Buri,1,66,142,261,0,0,27,5,7,43,0,0,2,2,1,5,17,1,0,1,9,0,73,0,0,0,2,39,0,0,10,0,17,0,87,0,2,3,13,3,1,0,14,0,4,3,1,68,0,2,3,0,0,4,0,1,1,2,0,2,0,16,21,13,1,0,4,0,3,0,0,1,1,4,14,0,0 57 | Songkhla,0,0,1,441,0,0,12,3,29,1,0,19,9,1,191,2,0,4,0,6,3,1,3,0,4,1,2,26,0,0,4,0,11,133,1,59,3,7,0,20,91,198,2,20,5,0,1,11,163,0,2,1,4,7,0,0,3,0,1,58,0,2,50,0,0,0,1,157,1,86,2,1,4,0,0,71,1 58 | Samut Songkhram,0,7,17,864,0,2,57,6,6,3,1,5,2,5,2,5,0,31,1,2,1,1,6,0,5,2,3,83,0,0,13,0,115,1,5,0,10,284,0,130,1,0,1,4,3,0,3,81,0,0,521,0,0,7,2,5,0,262,2,1,1,9,87,3,0,0,2,0,1,1,1,4,0,0,0,0,0 59 | Samut Sakhon,0,6,39,2446,1,3,64,8,10,2,0,0,7,6,0,7,1,24,1,0,2,1,5,2,2,3,1,156,0,0,21,2,459,1,2,0,14,164,1,65,4,1,4,2,5,3,2,124,0,1,108,2,1,16,4,2,148,0,2,9,1,14,180,13,3,1,0,0,1,0,2,3,2,0,2,0,0 60 | Sa Kaeo,0,0,9,193,0,25,41,50,1,1,3,0,2,52,0,1,1,0,0,0,0,0,3,0,2,0,0,10,0,0,9,1,0,1,1,0,14,6,1,2,0,0,2,0,4,1,53,20,0,0,1,3,0,10,1,2,1,3,0,0,0,0,15,6,1,3,1,1,1,0,7,2,1,0,0,0,1 61 | Surat Thani,0,1,10,560,0,1,31,7,67,0,0,97,10,4,185,9,0,14,1,2,2,1,3,0,1,5,1,16,1,0,8,0,7,154,0,2,5,15,1,47,142,13,0,61,14,1,2,17,2,0,6,0,10,8,0,64,0,5,0,0,0,4,72,0,1,1,1,5,1,15,3,1,5,0,0,4,0 62 | Sakon Nakhon,4,0,3,80,17,4,5,0,3,0,1,0,2,2,1,86,0,2,28,17,1,0,0,17,28,1,1,5,2,26,13,122,2,0,0,0,1,3,0,2,3,1,2,0,2,0,2,7,0,0,1,6,0,1,0,1,2,1,1,0,0,0,4,2,2,1,1,1,1,0,0,11,116,0,0,0,4 63 | Suphan Buri,0,75,148,830,0,3,53,3,27,35,0,1,8,9,2,9,5,116,0,3,7,1,16,0,5,1,4,263,0,0,25,0,200,2,27,0,4,33,1,29,5,0,10,0,6,2,3,118,0,1,35,1,0,6,19,1,7,11,0,2,0,0,57,12,1,0,4,0,1,0,2,2,3,4,20,0,0 64 | Samut Prakan,3,14,222,26953,0,21,1472,383,265,29,7,4,122,99,30,87,9,110,4,10,42,4,47,5,20,4,9,1000,0,13,175,2,390,25,56,4,120,201,5,177,96,0,23,9,38,6,39,1016,2,7,97,12,2,170,25,52,86,166,20,69,6,58,0,92,10,13,15,6,11,10,32,53,51,16,7,3,1 65 | Saraburi,0,11,399,1088,1,20,65,26,10,8,8,0,4,14,1,28,6,10,1,5,5,1,192,0,10,0,1,128,0,1,430,2,40,2,20,0,73,19,2,13,4,0,3,1,25,0,14,256,0,1,7,5,0,14,10,1,7,8,6,4,1,14,73,0,4,3,0,1,2,0,2,4,4,3,2,0,1 66 | Surin,1,0,11,102,1,97,17,3,7,1,2,0,9,5,0,23,0,4,3,6,0,0,0,1,18,0,0,11,0,1,77,0,4,0,1,0,4,2,0,3,1,0,0,0,3,0,2,15,0,0,4,25,0,6,0,0,5,0,3,4,1,1,12,4,0,78,0,0,2,0,2,49,2,0,2,0,2 67 | Sisaket,4,0,5,129,2,38,18,5,12,0,6,0,0,4,1,39,0,0,2,2,2,0,2,6,25,0,0,7,0,1,36,3,3,0,0,0,2,2,0,2,1,0,1,2,1,1,3,29,0,0,1,12,0,7,1,0,1,0,3,1,2,0,12,8,87,0,1,0,1,0,2,540,9,1,0,0,15 68 | Sukhothai,0,3,12,93,1,2,13,2,57,2,1,0,11,1,0,5,36,6,0,2,38,5,9,0,4,2,3,9,1,0,2,1,5,1,18,0,1,3,7,3,0,0,180,0,8,13,0,11,0,8,2,1,0,1,7,0,2,2,0,1,0,4,15,0,0,0,0,1,25,0,0,1,0,46,1,0,0 69 | Satun,0,0,2,62,0,0,4,0,9,0,0,1,2,0,28,0,0,0,0,0,0,1,0,0,0,0,0,6,0,0,0,0,2,7,0,3,0,7,0,2,5,7,0,7,4,0,0,3,9,0,2,0,0,0,0,146,2,0,0,9,1,1,5,1,0,0,0,0,1,12,1,0,1,0,0,3,0 70 | Tak,0,3,12,120,0,1,9,1,94,3,1,1,5,5,1,2,91,3,0,1,102,13,3,0,0,5,1,12,0,0,5,1,6,0,38,1,1,9,2,7,0,0,44,1,3,5,0,17,0,2,5,0,1,2,12,0,1,1,1,2,2,8,8,4,2,0,30,0,0,0,0,3,3,3,2,0,0 71 | Trang,0,0,24,95,0,0,1,0,5,0,0,20,3,1,102,2,0,0,0,0,0,1,0,0,0,0,0,9,0,0,1,0,1,37,0,4,0,3,0,2,18,58,1,8,3,1,0,2,4,1,2,0,1,0,0,69,0,0,0,18,1,3,5,1,0,0,0,14,0,0,1,2,0,0,0,2,0 72 | Trat,0,1,7,318,0,2,84,28,21,0,1,2,4,174,1,9,0,5,0,4,0,1,3,1,0,2,1,29,0,0,19,0,8,3,1,0,5,17,0,4,4,0,3,0,7,0,1,20,0,0,2,1,0,67,1,4,2,2,9,3,1,1,35,5,2,1,0,0,1,1,0,3,1,0,0,1,0 73 | Ubon Ratchathani,84,0,19,623,2,58,65,5,25,0,5,2,5,12,6,154,0,2,11,3,4,1,3,58,85,0,1,32,0,4,90,23,9,2,2,0,5,11,1,10,6,0,5,0,6,0,5,51,0,1,3,64,0,18,1,3,4,5,5,2,13,1,73,10,44,588,0,0,2,2,7,0,13,0,1,0,97 74 | Udon Thani,3,1,3,419,33,4,36,3,53,2,14,1,13,6,1,619,0,7,32,89,1,3,3,3,101,0,1,24,131,1039,73,22,12,2,0,0,2,4,0,7,10,0,10,1,20,2,4,30,0,1,6,14,0,15,0,6,2,1,1,7,121,3,57,3,1,6,1,0,1,0,1,11,0,2,0,0,2 75 | Uttaradit,0,2,11,99,0,1,13,0,39,0,1,1,18,1,0,6,4,2,1,3,27,6,4,0,0,3,18,8,1,1,4,0,6,1,14,0,0,3,12,5,0,0,131,0,11,114,0,12,0,11,0,0,0,9,11,0,1,0,0,0,0,2,13,1,0,1,38,1,8,0,0,2,1,0,0,0,1 76 | Uthai Thani,0,7,23,110,0,0,9,1,4,40,1,0,0,1,0,1,6,3,0,1,0,3,5,0,0,0,0,10,0,0,5,0,12,0,128,0,0,0,2,3,1,0,4,1,3,0,1,13,0,0,2,0,0,2,18,0,1,2,1,0,0,20,3,2,2,0,4,0,5,0,0,0,1,0,0,0,0 77 | Yala,0,0,1,28,0,0,0,0,3,1,0,1,1,0,2,1,0,0,0,0,1,0,0,0,1,1,0,3,0,0,0,0,0,4,0,23,0,0,0,2,5,2,0,1,0,0,0,1,64,0,0,0,1,0,0,60,0,0,0,0,0,0,1,0,0,0,0,5,0,4,0,0,0,0,0,0,0 78 | Yasothon,14,0,2,23,0,8,4,1,0,0,2,0,0,1,0,19,0,1,6,2,0,0,0,13,43,0,0,6,1,0,14,1,1,0,0,0,0,0,1,1,0,0,1,0,1,0,0,7,0,0,0,43,0,1,0,1,0,0,0,0,0,0,1,2,4,9,0,0,0,0,0,80,1,1,0,0,0 79 | --------------------------------------------------------------------------------