Skip to content

Commit 6a3a024

Browse files
committed
clean datalist
1 parent e151395 commit 6a3a024

File tree

4 files changed

+67
-32
lines changed

4 files changed

+67
-32
lines changed

frequency.qml

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<Option type="Map" name="properties">
3232
<Option type="Map" name="outlineWidth">
3333
<Option type="bool" name="active" value="true"/>
34-
<Option type="QString" name="expression" value="(&quot;frequency&quot;^0.5) * 0.15"/>
34+
<Option type="QString" name="expression" value="(&quot;frequency&quot;^0.4) * 0.4"/>
3535
<Option type="int" name="type" value="3"/>
3636
</Option>
3737
</Option>
@@ -67,7 +67,7 @@
6767
<Option type="Map" name="properties">
6868
<Option type="Map" name="outlineWidth">
6969
<Option type="bool" name="active" value="true"/>
70-
<Option type="QString" name="expression" value="(&quot;frequency&quot;^0.5) * 0.08"/>
70+
<Option type="QString" name="expression" value="(&quot;frequency&quot;^0.4) * 0.2"/>
7171
<Option type="int" name="type" value="3"/>
7272
</Option>
7373
</Option>

gtfs_go_datalist.json

+30-16
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,104 @@
11
[
22
{
3+
"country": "JPN",
34
"region": "北海道",
45
"name": "北海道拓殖バス(一般路線バス・各町コミュニティバス)",
56
"url": "https://www.takubus.com/app/download/10941479479/GTFS_regular_line.zip?t=1606785205"
67
},
78
{
9+
"country": "JPN",
810
"region": "富山県",
911
"name": "まいどはやバス",
1012
"url": "https://opdt.city.toyama.lg.jp/dataset/8de65493-0af7-49d3-aab6-b495fc3ea2b0/resource/43903d9f-1d9c-42f0-bd01-8a5fc1cb828c/download/city-toyama-maidohaya-gtfs.zip"
1113
},
1214
{
15+
"country": "JPN",
1316
"region": "奈良県",
1417
"name": "ぐるっとバス",
1518
"url": "http://www.pref.nara.jp/secure/204903/GTFS-JP(2021-03-18_1033).zip"
1619
},
1720
{
21+
"country": "JPN",
1822
"region": "大分県",
1923
"name": "コミュニティバス時刻表(中津市全体)",
2024
"url": "https://www.city-nakatsu.jp/doc/2019072300060/file_contents/GTFS_Nakatsu_city.zip"
2125
},
2226
{
23-
"region": "Douala, Cameroon",
27+
"country": "JPN",
28+
"region": "山梨県",
29+
"name": "山梨県全市町",
30+
"url": "https://transitfeeds.com/p/yamanashi/813/latest/download"
31+
},
32+
{
33+
"country": "CMR",
34+
"region": "Douala",
2435
"name": "Yellow Taxis",
2536
"url": "https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/1188736/gtfs_yellow_taxis.zip"
26-
}
27-
,
37+
},
2838
{
29-
"region": "Douala, Cameroon",
39+
"country": "CMR",
40+
"region": "Douala",
3041
"name": "Socatur Bus",
3142
"url": "https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/1188736/socatur-bus.zip"
3243
},
3344
{
34-
"region": "Mexico",
35-
"name": "Mexico city",
45+
"country": "MEX",
46+
"region": "Mexico City",
47+
"name": "Mexico City GTFS",
3648
"url": "https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/974581/gtfs_semovi_cdmx.zip"
37-
}
38-
,
49+
},
3950
{
40-
"region": "Brazil",
51+
"country": "BRA",
52+
"region": "Porto Alegre",
4153
"name": "Porto Alegre",
4254
"url": "https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/1188536/gtfs_porto_alegre_2020.zip"
43-
}
44-
,
45-
{
46-
"region": "山梨県",
47-
"name": "山梨県全市町",
48-
"url": "https://transitfeeds.com/p/yamanashi/813/latest/download"
4955
},
5056
{
57+
"country": "USA",
5158
"region": "New York",
5259
"name": "Subway",
5360
"url": "http://web.mta.info/developers/data/nyct/subway/google_transit.zip"
5461
},
5562
{
63+
"country": "USA",
5664
"region": "New York",
5765
"name": "Bronx",
5866
"url": "http://web.mta.info/developers/data/nyct/bus/google_transit_bronx.zip"
5967
},
6068
{
69+
"country": "USA",
6170
"region": "New York",
6271
"name": "Queens",
6372
"url": "http://web.mta.info/developers/data/nyct/bus/google_transit_queens.zip"
6473
},
6574
{
75+
"country": "USA",
6676
"region": "New York",
6777
"name": "Brooklyn",
6878
"url": "http://web.mta.info/developers/data/nyct/bus/google_transit_brooklyn.zip"
6979
},
7080
{
81+
"country": "USA",
7182
"region": "New York",
7283
"name": "Staten Island",
7384
"url": "http://web.mta.info/developers/data/nyct/bus/google_transit_staten_island.zip"
7485
},
7586
{
87+
"country": "USA",
7688
"region": "New York",
7789
"name": "Metro North",
7890
"url": "http://web.mta.info/developers/data/mnr/google_transit.zip"
7991
},
8092
{
93+
"country": "USA",
8194
"region": "New York",
8295
"name": "Bus co.",
8396
"url": "http://web.mta.info/developers/data/busco/google_transit.zip"
8497
},
8598
{
99+
"country": "USA",
86100
"region": "New York",
87101
"name": "Nassau",
88102
"url": "http://www.nicebus.com/NiceBus/media/Nicebus-FrontPageNewsImages/To_Google_Merged.zip"
89103
}
90-
]
104+
]

gtfs_go_dialog.py

+27-6
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@
2929
import shutil
3030
import zipfile
3131
import tempfile
32+
import datetime
3233

3334
from qgis.PyQt import QtWidgets, uic
35+
from PyQt5.QtCore import QDate
3436
from qgis.core import *
3537

3638
from .gtfs_parser import GTFSParser
3739

38-
from .gtfs_go_loader import GTFSGoLoader
3940
from .gtfs_go_renderer import Renderer
4041
from .gtfs_go_labeling import get_labeling_for_stops
4142
from .gtfs_go_settings import (
@@ -79,6 +80,11 @@ def init_gui(self):
7980
self.ui.simpleRadioButton.clicked.connect(self.refresh)
8081
self.ui.freqRadioButton.clicked.connect(self.refresh)
8182

83+
# set today DateEdit
84+
now = datetime.datetime.now()
85+
self.ui.filterByDateDateEdit.setDate(
86+
QDate(now.year, now.month, now.day))
87+
8288
self.refresh()
8389

8490
self.ui.pushButton.clicked.connect(self.execution)
@@ -87,6 +93,7 @@ def make_combobox_text(self, data):
8793
"""
8894
parse data to combobox-text
8995
data-schema: {
96+
country: str,
9097
region: str,
9198
name: str,
9299
url: str
@@ -98,9 +105,7 @@ def make_combobox_text(self, data):
98105
Returns:
99106
str: combobox-text
100107
"""
101-
if data.get('region') is None:
102-
return data["name"]
103-
return '[' + data["region"] + ']' + data["name"]
108+
return '[' + data["country"] + ']' + '[' + data["region"] + ']' + data["name"]
104109

105110
def download_zip(self, url: str) -> str:
106111
data = urllib.request.urlopen(url).read()
@@ -143,11 +148,12 @@ def execution(self):
143148
else:
144149
routes_geojson = {
145150
'type': 'FeatureCollection',
146-
'features': gtfs_parser.read_route_frequency()
151+
'features': gtfs_parser.read_route_frequency(yyyymmdd=self.get_yyyymmdd(),
152+
delimiter=self.get_delimiter())
147153
}
148154
stops_geojson = {
149155
'type': 'FeatureCollection',
150-
'features': gtfs_parser.read_interpolated_stops()
156+
'features': gtfs_parser.read_interpolated_stops(delimiter=self.get_delimiter())
151157
}
152158

153159
output_dir = os.path.join(
@@ -162,6 +168,20 @@ def execution(self):
162168

163169
self.ui.close()
164170

171+
def get_yyyymmdd(self):
172+
if not self.ui.filterByDateCheckBox.isChecked():
173+
return ''
174+
date = self.ui.filterByDateDateEdit.date()
175+
yyyy = str(date.year()).zfill(4)
176+
mm = str(date.month()).zfill(2)
177+
dd = str(date.day()).zfill(2)
178+
return yyyy + mm + dd
179+
180+
def get_delimiter(self):
181+
if not self.ui.delimiterCheckBox.isChecked():
182+
return ''
183+
return self.ui.delimiterLineEdit.text()
184+
165185
def show_geojson(self, geojson_dir: str):
166186
# these geojsons will already have been generated
167187
stops_geojson = os.path.join(geojson_dir, FILENAME_STOPS_GEOJSON)
@@ -178,6 +198,7 @@ def show_geojson(self, geojson_dir: str):
178198
if self.ui.simpleRadioButton.isChecked():
179199
routes_vlayer.setRenderer(routes_renderer.make_renderer())
180200
else:
201+
# set style from QML
181202
routes_vlayer.loadNamedStyle(os.path.join(
182203
os.path.dirname(__file__), 'frequency.qml'))
183204

gtfs_go_dialog_base.ui

+8-8
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
</layout>
8888
</item>
8989
<item>
90-
<widget class="QRadioButton" name="radioButton">
90+
<widget class="QRadioButton" name="simpleRadioButton">
9191
<property name="text">
9292
<string>simple routes and stops</string>
9393
</property>
@@ -97,7 +97,7 @@
9797
</widget>
9898
</item>
9999
<item>
100-
<widget class="QFrame" name="frame">
100+
<widget class="QFrame" name="simpleFrame">
101101
<property name="enabled">
102102
<bool>true</bool>
103103
</property>
@@ -142,7 +142,7 @@
142142
</widget>
143143
</item>
144144
<item>
145-
<widget class="QRadioButton" name="radioButton_2">
145+
<widget class="QRadioButton" name="freqRadioButton">
146146
<property name="text">
147147
<string>aggregate route frequency</string>
148148
</property>
@@ -152,7 +152,7 @@
152152
</widget>
153153
</item>
154154
<item>
155-
<widget class="QFrame" name="frame_2">
155+
<widget class="QFrame" name="freqFrame">
156156
<property name="frameShape">
157157
<enum>QFrame::StyledPanel</enum>
158158
</property>
@@ -163,14 +163,14 @@
163163
<item>
164164
<layout class="QHBoxLayout" name="horizontalLayout_6">
165165
<item>
166-
<widget class="QCheckBox" name="checkBox">
166+
<widget class="QCheckBox" name="delimiterCheckBox">
167167
<property name="text">
168168
<string>stop_id delimiter</string>
169169
</property>
170170
</widget>
171171
</item>
172172
<item>
173-
<widget class="QLineEdit" name="lineEdit">
173+
<widget class="QLineEdit" name="delimiterLineEdit">
174174
<property name="sizePolicy">
175175
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
176176
<horstretch>0</horstretch>
@@ -186,7 +186,7 @@
186186
</widget>
187187
</item>
188188
<item>
189-
<widget class="QCheckBox" name="checkBox_4">
189+
<widget class="QCheckBox" name="filterByDateCheckBox">
190190
<property name="sizePolicy">
191191
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
192192
<horstretch>0</horstretch>
@@ -199,7 +199,7 @@
199199
</widget>
200200
</item>
201201
<item>
202-
<widget class="QDateEdit" name="dateEdit">
202+
<widget class="QDateEdit" name="filterByDateDateEdit">
203203
<property name="sizePolicy">
204204
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
205205
<horstretch>0</horstretch>

0 commit comments

Comments
 (0)