{"id":99,"date":"2026-05-19T00:13:05","date_gmt":"2026-05-18T15:13:05","guid":{"rendered":"https:\/\/udri.or.jp\/topics\/?p=99"},"modified":"2026-05-19T11:36:00","modified_gmt":"2026-05-19T02:36:00","slug":"conveyal-r5%e3%81%a7%e5%85%ac%e5%85%b1%e4%ba%a4%e9%80%9a%e5%88%b0%e9%81%94%e5%9c%8f%e8%a7%a3%e6%9e%90-wip","status":"publish","type":"post","link":"https:\/\/udri.or.jp\/topics\/2026\/05\/19\/conveyal-r5%e3%81%a7%e5%85%ac%e5%85%b1%e4%ba%a4%e9%80%9a%e5%88%b0%e9%81%94%e5%9c%8f%e8%a7%a3%e6%9e%90-wip\/","title":{"rendered":"Conveyal R5\u3067\u516c\u5171\u4ea4\u901a\u5230\u9054\u570f\u89e3\u6790 (wip)"},"content":{"rendered":"\n<p><a href=\"https:\/\/udri.or.jp\/topics\/2026\/04\/07\/gtfs\/\" data-type=\"link\" data-id=\"https:\/\/udri.or.jp\/topics\/2026\/04\/07\/gtfs\/\">\u524d\u8a18\u4e8b<\/a>\u3067\u306f\u3001OpenTripPlanner\u3068QGIS\u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u3088\u308a\u3001GTFS\u306b\u542b\u307e\u308c\u308b\u30d0\u30b9\u30eb\u30fc\u30c8\u3084\u505c\u7559\u6240\u306e\u7c21\u5358\u8868\u793a\u3092\u8a66\u307f\u305f\u304c\u3001\u5230\u9054\u570f\u89e3\u6790\uff08isochrone\uff09\u3092\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001OTP\u30921\u7cfb\u306b\u843d\u3068\u3055\u306a\u304f\u3066\u306f\u306a\u3089\u306a\u304b\u3063\u305f\u308a\uff08\u73fe\u5728\u306eOTP\u30d0\u30fc\u30b8\u30e7\u30f32.9\uff09\u306a\u304b\u306a\u304b\u5384\u4ecb\u306a\u30cf\u30de\u308a\u70b9\u304c\u51fa\u3066\u304d\u305f\u305f\u3081\u3001\u3082\u3046\u4e00\u3064\u306e\u89e3\u6790\u30a8\u30f3\u30b8\u30f3Conveyal\u793e\u306eR5\u3092\u4f7f\u3063\u3066\u307f\u308b\u3002<\/p>\n\n\n\n<ul class=\"article-toc\">\n  <li><a href=\"#r5_tool\">1.\u5fc5\u8981\u30c4\u30fc\u30eb<\/a><\/li>\n  <li><a href=\"#r5_folder\">2.R5\u306e\u4f5c\u696d\u30d5\u30a9\u30eb\u30c0\u6574\u5099<\/a><\/li>\n  <li><a href=\"#opt\">3.\u89e3\u6790\u7528\u30d7\u30ed\u30b0\u30e9\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/a><\/li>\n  <li><a href=\"#opt-tutorial\">4.\u57fa\u672c\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb<\/a><\/li>\n  <li><a href=\"#kiyobus\">5.\u304d\u3088\u30d0\u30b9gtfs\u306b\u3088\u308b\u7df4\u7fd2<\/a><\/li>\n  <li><a href=\"#gtfsgo\">6.QGIS\u3068\u306e\u63a5\u7d9aGTFS-GO<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"r5_tool\">\uff11\uff0e\u5fc5\u8981\u30c4\u30fc\u30eb<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Python\uff08\u63a8\u5968\uff1a3.11\u7cfb\uff09<\/h3>\n\n\n\n<p>Python\u516c\u5f0f\u30b5\u30a4\u30c8\uff1a<br><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/www.python.org\/downloads\/?utm_source=chatgpt.com\">Python Downloads<\/a><\/p>\n\n\n\n<p>\u521d\u3081\u3066Python\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306a\u3089\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306b\u3000<strong> Add Python to PATH<\/strong> \u306b\u30c1\u30a7\u30c3\u30af\u3092\u5165\u308c\u308b\u3002<br>\u203bWindows\u306a\u3089\u3001\u76f4\u63a53.11.9\u306e\u5b9f\u884c\u578b\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u3082\u3088\u3044<br><a href=\"https:\/\/www.python.org\/ftp\/python\/3.11.9\/python-3.11.9-amd64.exe\" data-type=\"link\" data-id=\"https:\/\/www.python.org\/ftp\/python\/3.11.9\/python-3.11.9-amd64.exe\" target=\"_blank\" rel=\"noreferrer noopener\">Python 3.11.9 Windows installer (64-bit)<\/a><br><br>\u203b2\u3064\u4ee5\u4e0a\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5171\u5b58\u3055\u305b\u308b\u306a\u3089\u3001<strong>Add Python to PATH<\/strong>\u3000\u3092\u5165\u308c\u305a\u306b\u3000c:\\Python311 \u306a\u3069\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u305d\u3053\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002\uff08R5\u5b9f\u884c\u6642\u306b\u6307\u5b9a\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3067\u78ba\u8a8d\u3002\u3000python --version \n\u203bD:\u30c9\u30e9\u30a4\u30d6\u306bPython311\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u305d\u3053\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u5834\u5408\u306e\u78ba\u8a8d\u3002\nD:\\Python311\\python --version<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Java\uff08\u63a8\u5968\uff1aJava 17 LTS\uff09<\/h3>\n\n\n\n<p>R5 \u306f\u5185\u90e8\u3067 Java \u3092\u5229\u7528\u3057\u3066\u52d5\u4f5c\u3059\u308b\u3002<\/p>\n\n\n\n<p><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/adoptium.net\/temurin\/releases\/?utm_source=chatgpt.com\">Eclipse Temurin Downloads<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3067\u78ba\u8a8d\u3002\u3000java -version\u3000<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. r5py \u95a2\u9023\u30e9\u30a4\u30d6\u30e9\u30ea<\/h3>\n\n\n\n<p>\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3067\u4ee5\u4e0b\u3092\u5b9f\u884c\u3059\u308b\u3002<br>pip install r5py geopandas pyogrio<br>\u203b\u4f7f\u7528\u3059\u308bPython\u3092\u660e\u793a\u3057\u305f\u3044\u5834\u5408\u306f\u3001<br><strong>\u216e:\\Python311\\Scripts\\<\/strong>pip install r5py geopandas pyogrio \u306a\u3069<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"r5_folder\">\uff12. R5\u306e\u4f5c\u696d\u30d5\u30a9\u30eb\u30c0\u6574\u5099<\/h2>\n\n\n\n<p>\u4f5c\u696d\u7528\u30d5\u30a9\u30eb\u30c0\u3092 \uff08\u3053\u3053\u3067\u306f\u5916\u90e8SSD\u306b\u3000r5\u30d5\u30a9\u30eb\u30c0\u4f5c\u6210\uff09\u7528\u610f<br>\uff08\u4f8b\u3048\u3070\uff09D:\u00a5r5<br>\u3053\u306e\u4e0b\u306b\u3001kiyobus\u306a\u3069\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001GTFS\u3068OSM\u30c7\u30fc\u30bf\u3092\u914d\u7f6e\u3002<br>\u540c\u3058\u30d5\u30a9\u30eb\u30c0\u306b\u3001\u51fa\u529b\u7528 output\u3000\u30d5\u30a9\u30eb\u30c0\u3068\u3000\u30ad\u30e3\u30c3\u30b7\u30e5\u7528\u3000cache\u3000\u30d5\u30a9\u30eb\u30c0\u306a\u3069\u3082\u4f5c\u6210\u3057\u3066\u304a\u304f\u3068\u3088\u3044\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"template\">\uff13\uff0e\u89e3\u6790\u7528\u30d7\u30ed\u30b0\u30e9\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/h2>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u4f4d\u7f6e\u3084\u89e3\u6790\u3057\u305f\u3044\u5834\u6240\u60c5\u5831\u3001\u51fa\u529b\u5148\u306a\u3069\u3092\u6c7a\u3081\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<br>make_iso.py\u3000\u30d5\u30a1\u30a4\u30eb\u306e\u5192\u982d\u306b\u4e0b\u8a18\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u914d\u7f6e\u3057\u3066\u304a\u304f\u3068\u3088\u3044\uff08\u308f\u304b\u308a\u3084\u3059\u3044\uff09\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OSM\u30d5\u30a1\u30a4\u30eb<\/li>\n\n\n\n<li>GTFS\u30d5\u30a1\u30a4\u30eb<\/li>\n\n\n\n<li>\u76ee\u7684\u5730\uff08\u6e05\u702c\u99c5\u306a\u3069\uff09<\/li>\n\n\n\n<li>\u51fa\u767a\u5730\u70b9<\/li>\n\n\n\n<li>\u51fa\u767a\u6642\u523b<\/li>\n\n\n\n<li>\u51fa\u529b\u5148<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"># ============================================<br># R5 \u5230\u9054\u6642\u9593\u89e3\u6790\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<br># \u304d\u3088\u30d0\u30b9gtfs\u3067\u3042\u308b\u5834\u6240\uff08Origin01\uff09\u304b\u3089\u6e05\u702c\u99c5\u307e\u3067<br># Origin01\u306e\u5ea7\u6a19\u306f\u3001QGIS\u3068QGIS-GO\u304b\u3089\u53d6\u5f97<br># ============================================<br><br>import datetime<br><br>import geopandas as gpd<br>import r5py<br><br>from shapely.geometry import Point<br><br># ============================================<br># OSM \/ GTFS<br># ============================================<br><br>OSM_FILE = r\"D:\/r5\/kiyobus\/kanto-260511.osm.pbf\"<br><br>GTFS_FILE = r\"D:\/r5\/kiyobus\/kiyobus.gtfs.zip\"<br><br># ============================================<br># \u51fa\u529b\u5148<br># ============================================<br><br>OUTPUT_FILE = r\"D:\/r5\/kiyobus\/output\/travel_time.gpkg\"<br><br># ============================================<br># \u76ee\u7684\u5730\uff08\u6e05\u702c\u99c5\uff09<br># ============================================<br><br>DEST_NAME = \"KiyoseStation\"<br><br>DEST_LON = 139.5265<br>DEST_LAT = 35.7857<br><br># ============================================<br># \u51fa\u767a\u5730\u70b9<br># ============================================<br><br>ORIGIN_NAME = \"Origin01\"<br><br>ORIGIN_LON = 139.497806<br>ORIGIN_LAT = 35.775772<br><br># ============================================<br># \u51fa\u767a\u6642\u523b<br># ============================================<br><br>DEPARTURE_YEAR = 2026<br>DEPARTURE_MONTH = 5<br>DEPARTURE_DAY = 19<br><br>DEPARTURE_HOUR = 8<br>DEPARTURE_MINUTE = 0<br><br># ============================================<br># \u6761\u4ef6<br># ============================================<br><br>MAX_TRAVEL_MINUTES = 60<br><br>TRANSPORT_MODES = [\"WALK\", \"TRANSIT\"]<br><br># ============================================<br># \u6b69\u884c\u901f\u5ea6\uff08m\/s\uff09<br># ============================================<br><br>WALK_SPEED = 1.0<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<pre class=\"wp-block-preformatted\"># ============================================<br># R5 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u751f\u6210\uff08\u5192\u982d\u306b\u7d9a\u304f\u672c\u4f53\uff09<br># ============================================<br><br>print(\"R5 network \u4f5c\u6210\u4e2d...\")<br><br>network = r5py.TransportNetwork(<br>    OSM_FILE,<br>    [GTFS_FILE]<br>)<br><br>print(\"R5 network \u4f5c\u6210\u5b8c\u4e86\")<br><br># ============================================<br># \u76ee\u7684\u5730<br># ============================================<br><br>destinations = gpd.GeoDataFrame(<br>    {<br>        \"id\": [DEST_NAME]<br>    },<br>    geometry=[<br>        Point(DEST_LON, DEST_LAT)<br>    ],<br>    crs=\"EPSG:4326\"<br>)<br><br># ============================================<br># \u51fa\u767a\u5730\u70b9<br># ============================================<br><br>origins = gpd.GeoDataFrame(<br>    {<br>        \"id\": [ORIGIN_NAME]<br>    },<br>    geometry=[<br>        Point(ORIGIN_LON, ORIGIN_LAT)<br>    ],<br>    crs=\"EPSG:4326\"<br>)<br><br># ============================================<br># \u5230\u9054\u6642\u9593\u8a08\u7b97<br># ============================================<br><br>print(\"\u5230\u9054\u6642\u9593\u8a08\u7b97\u4e2d...\")<br><br>travel_times = r5py.TravelTimeMatrix(<br>    transport_network=network,<br><br>    origins=origins,<br>    destinations=destinations,<br><br>    transport_modes=TRANSPORT_MODES,<br><br>    departure=datetime.datetime(<br>        DEPARTURE_YEAR,<br>        DEPARTURE_MONTH,<br>        DEPARTURE_DAY,<br>        DEPARTURE_HOUR,<br>        DEPARTURE_MINUTE<br>    ),<br><br>    max_time=datetime.timedelta(<br>        minutes=MAX_TRAVEL_MINUTES<br>    )<br>)<br><br># ============================================<br># \u7d50\u679c\u8868\u793a<br># ============================================<br><br>print(travel_times)<br><br># ============================================<br># \u4fdd\u5b58<br># ============================================<br><br>travel_times.to_file(<br>    OUTPUT_FILE,<br>    driver=\"GPKG\"<br>)<br>origins.to_file(<br>    r\"D:\/r5\/kiyobus\/output\/origins.gpkg\",<br>    driver=\"GPKG\"<br>)<br><br>destinations.to_file(<br>    r\"D:\/r5\/kiyobus\/output\/destinations.gpkg\",<br>    driver=\"GPKG\"<br>)<br>origins.to_file(<br>    r\"D:\/r5\/kiyobus\/output\/origins.gpkg\",<br>    driver=\"GPKG\"<br>)<br><br>print(\"===================================\")<br>print(\"\u51fa\u529b\u5b8c\u4e86\")<br>print(OUTPUT_FILE)<br>print(\"===================================\")<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\uff14\uff0e\u89e3\u6790\u5b9f\u884c\u4f8b<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Python\u306e\u5b9f\u884c\nD:\\Python311\\python D:\\r5\\kiyobus\\make_iso.py\n\u203bjava\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u306a\u3069\u306e\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u5834\u5408\u306f\u3001set JAVA_HOME=C:\\java\u3000\u306a\u3069\u3067\n\u4e00\u6642\u7684\u306bJAVA_HOME\u3000\u306e\u5834\u6240\u3092\u8a2d\u5b9a\n\n\u5b9f\u884c\u6210\u529f\u3059\u308b\u3068\n\u51fa\u529b\u5b8c\u4e86\nD:\/r5\/kiyobus\/output\/travel_time.gpkg\n\u306a\u3069\u3067\u7d42\u4e86\u3059\u308b\u3002\n\n\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e3b\u306a\u89e3\u6790\u4f8b<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u516c\u5171\u4ea4\u901a\u5230\u9054\u570f\uff08Isochrone\uff09<\/li>\n\n\n\n<li>\u6642\u9593\u5e2f\u5225\u5230\u9054\u570f\u6bd4\u8f03<\/li>\n\n\n\n<li>\u5f92\u6b69\uff0b\u516c\u5171\u4ea4\u901a\u89e3\u6790<\/li>\n\n\n\n<li>\u5230\u9054\u4eba\u53e3\u5206\u6790<\/li>\n\n\n\n<li>\u533b\u7642\u30fb\u907f\u96e3\u65bd\u8a2d\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u89e3\u6790<\/li>\n<\/ul>\n\n\n\n<p>\u306a\u3069\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a18\u4e8b\u3067\u306f\u3001OpenTripPlanner\u3068QGIS\u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u3088\u308a\u3001GTFS\u306b\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-99","post","type-post","status-publish","format-standard","hentry","category-notes"],"_links":{"self":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/comments?post=99"}],"version-history":[{"count":11,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":112,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/posts\/99\/revisions\/112"}],"wp:attachment":[{"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/media?parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/categories?post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/udri.or.jp\/topics\/wp-json\/wp\/v2\/tags?post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}