mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-22 14:13:45 +00:00
Compare commits
1 Commits
generate-2
...
generate-n
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17a6c34e7f |
@@ -105,17 +105,17 @@ jobs:
|
||||
run: |
|
||||
echo "Cloning $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY branch $FORGEJO_REF_NAME"
|
||||
cd ~
|
||||
git clone --depth 1 --recurse-submodules --shallow-submodules -b $FORGEJO_REF_NAME --single-branch $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY.git comaps
|
||||
git clone --recurse-submodules --shallow-submodules -b $FORGEJO_REF_NAME --single-branch $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY.git comaps
|
||||
- name: Checkout wikiparser repo
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~
|
||||
git clone --depth 1 --single-branch https://codeberg.org/comaps/wikiparser.git
|
||||
git clone https://codeberg.org/comaps/wikiparser.git
|
||||
- name: Checkout subways repo
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~
|
||||
git clone --depth 1 --single-branch https://codeberg.org/comaps/subways.git
|
||||
git clone https://codeberg.org/comaps/subways.git
|
||||
|
||||
copy-coasts:
|
||||
# if: inputs.run-copy-coasts
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
This file contains a list of people who have contributed to this project.
|
||||
It is not necessarily comprehensive as contributors must manually add themselves.
|
||||
Its not neccesarily comprehensive.
|
||||
Feel free to add yourself here along with your first contribution!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
CoMaps contributors:
|
||||
(in alphabetical order)
|
||||
(in alphabetic order)
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Bastian Greshake Tzovaras
|
||||
clover sage
|
||||
Harry Bond <me@hbond.xyz>
|
||||
thesupertechie
|
||||
vikiawv
|
||||
Yannik Bloscheck
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ProgressBar;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.view.ViewCompat;
|
||||
@@ -22,7 +23,6 @@ import app.organicmaps.util.Utils;
|
||||
import app.organicmaps.util.WindowInsetUtils;
|
||||
import app.organicmaps.widget.StackedButtonDialogFragment;
|
||||
import com.google.android.material.imageview.ShapeableImageView;
|
||||
import com.google.android.material.progressindicator.CircularProgressIndicator;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
import java.text.NumberFormat;
|
||||
|
||||
@@ -50,7 +50,7 @@ public class ProfileFragment extends BaseMwmToolbarFragment
|
||||
private MaterialTextView mEditsSent;
|
||||
private MaterialTextView mProfileName;
|
||||
private ShapeableImageView mProfileImage;
|
||||
private CircularProgressIndicator mProfileInfoLoading;
|
||||
private ProgressBar mProfileInfoLoading;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
|
||||
@@ -33,13 +33,9 @@
|
||||
style="@style/MwmWidget.TextView.NavStreet"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/margin_quarter_plus"
|
||||
android:maxLines="2"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:gravity="center"
|
||||
android:autoSizeTextType="uniform"
|
||||
android:autoSizeMinTextSize="16sp"
|
||||
android:autoSizeMaxTextSize="25sp"
|
||||
android:textColor="@android:color/white"
|
||||
tools:text="Sample street name.\nLong looooooooong!!!!"/>
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -30,14 +30,12 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/margin_base"
|
||||
android:background="?colorPrimary">
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
<ProgressBar
|
||||
android:id="@+id/user_profile_loading"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:trackColor="@color/text_light"
|
||||
app:indicatorColor="@color/text_light"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true"
|
||||
android:indeterminateTint="@color/text_light"
|
||||
android:visibility="invisible"
|
||||
tools:visibility="visible" />
|
||||
<LinearLayout
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone" />
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
<ProgressBar
|
||||
android:id="@+id/progress"
|
||||
style="@style/Widget.AppCompat.ProgressBar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true"/>
|
||||
android:layout_gravity="center" />
|
||||
<include
|
||||
layout="@layout/feedback_fab"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
<ProgressBar
|
||||
android:id="@+id/progress"
|
||||
style="@style/Widget.AppCompat.ProgressBar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true"/>
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
<include layout="@layout/shadow_top"/>
|
||||
</FrameLayout>
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="2"
|
||||
android:padding="@dimen/margin_quarter"
|
||||
android:autoSizeTextType="uniform"
|
||||
android:autoSizeMinTextSize="19sp"
|
||||
android:autoSizeMaxTextSize="25sp"
|
||||
android:minHeight="60dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:gravity="center"
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
<ProgressBar
|
||||
style="@style/Widget.AppCompat.ProgressBar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"/>
|
||||
android:background="@null" />
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/search_show_on_map"
|
||||
style="@style/MwmWidget.ExtendedFAB"
|
||||
style="@style/FAB"
|
||||
app:icon="@drawable/ic_show_on_map"
|
||||
android:text="@string/search_show_on_map"
|
||||
android:clickable="true"
|
||||
android:focusable="true" />
|
||||
android:focusable="true"
|
||||
app:fabSize="mini"/>
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
<ProgressBar
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
style="@style/Widget.AppCompat.ProgressBar"
|
||||
android:layout_width="@dimen/height_block_base"
|
||||
android:layout_height="@dimen/height_block_base"
|
||||
android:padding="@dimen/margin_half"
|
||||
android:indeterminate="true"
|
||||
app:trackColor="@color/text_light"
|
||||
app:indicatorColor="@color/text_light" />
|
||||
android:background="@null"/>
|
||||
|
||||
@@ -34,17 +34,16 @@
|
||||
android:singleLine="true"
|
||||
android:textCursorDrawable="@drawable/cursor_drawable" />
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
<ProgressBar
|
||||
android:id="@+id/progress"
|
||||
style="@style/Widget.AppCompat.ProgressBar"
|
||||
android:layout_width="@dimen/search_progress_size"
|
||||
android:layout_height="@dimen/search_progress_size"
|
||||
android:layout_marginEnd="@dimen/margin_half"
|
||||
android:layout_weight="0"
|
||||
android:background="@null"
|
||||
android:minHeight="@dimen/search_progress_size"
|
||||
android:minWidth="@dimen/search_progress_size"
|
||||
app:trackColor="@color/text_light"
|
||||
app:indicatorColor="@color/text_light"
|
||||
android:indeterminate="true"/>
|
||||
android:minWidth="@dimen/search_progress_size"/>
|
||||
|
||||
<com.google.android.material.imageview.ShapeableImageView
|
||||
android:id="@+id/clear"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<style name="MwmTheme.Base" parent="Theme.Material3.DayNight.NoActionBar">
|
||||
<item name="materialCalendarStyle">@style/Widget.Material3.MaterialCalendar</item>
|
||||
<item name="materialCalendarStyle">@style/Widget.MaterialComponents.MaterialCalendar</item>
|
||||
<item name="materialCalendarFullscreenTheme">@style/MwmWidget.MaterialCalendar.Theme.FullScreen.Dark</item>
|
||||
<item name="materialCalendarTheme">@style/MwmWidget.MaterialCalendar.Theme.Dark</item>
|
||||
<item name="android:listViewStyle">@style/MwmWidget.ListView</item>
|
||||
@@ -111,7 +111,7 @@
|
||||
<item name="elevationProfileSelectedPointTriangle">@drawable/ic_ascent</item>
|
||||
<item name="elevationProfileFloatingTriangle">@drawable/ic_triangle_elevation</item>
|
||||
<item name="elevationProfileColor">@color/elevation_profile</item>
|
||||
<item name="android:popupMenuStyle">@style/Widget.Material3.PopupMenu</item>
|
||||
<item name="android:popupMenuStyle">@style/PopupMenu</item>
|
||||
|
||||
<item name="bottomSheetStyle">@style/MwmWidget.BottomSheet</item>
|
||||
<item name="bottomSheetDialogTheme">@style/MwmTheme.BottomSheetDialog</item>
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
<!-- Nav menu -->
|
||||
<dimen name="nav_elevation">6dp</dimen>
|
||||
<dimen name="nav_street_height">50dp</dimen>
|
||||
<dimen name="nav_street_height">44dp</dimen>
|
||||
<dimen name="nav_street_left">100dp</dimen>
|
||||
<dimen name="nav_next_turn_frame">88dp</dimen>
|
||||
<dimen name="nav_next_turn_top">8dp</dimen>
|
||||
|
||||
@@ -364,13 +364,23 @@
|
||||
<item name="behavior_hideable">false</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.ExtendedFAB" parent="Widget.Material3.ExtendedFloatingActionButton.Primary">
|
||||
<style name="FAB" parent="Widget.MaterialComponents.ExtendedFloatingActionButton">
|
||||
<item name="android:minHeight">30dp</item>
|
||||
<item name="android:minWidth">30dp</item>
|
||||
<item name="android:paddingTop">7dp</item>
|
||||
<item name="android:paddingBottom">7dp</item>
|
||||
<item name="android:paddingStart">12dp</item>
|
||||
<item name="android:paddingEnd">12dp</item>
|
||||
<item name="android:paddingLeft">12dp</item>
|
||||
<item name="android:paddingRight">12dp</item>
|
||||
<item name="iconPadding">4dp</item>
|
||||
<item name="iconSize">20dp</item>
|
||||
<item name="iconTint">?accentButtonTextColor</item>
|
||||
<item name="android:textColor">?accentButtonTextColor</item>
|
||||
<item name="backgroundTint">?colorSecondary</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="textAllCaps">false</item>
|
||||
<item name="android:textAllCaps">false</item>
|
||||
</style>
|
||||
|
||||
<style name="MwmWidget.M3.Button" parent="Widget.Material3.Button">
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
<item name="elevationProfileSelectedPointTriangle">@drawable/ic_ascent</item>
|
||||
<item name="elevationProfileFloatingTriangle">@drawable/ic_triangle_elevation</item>
|
||||
<item name="elevationProfileColor">@color/elevation_profile</item>
|
||||
<item name="android:popupMenuStyle">@style/Widget.Material3.PopupMenu</item>
|
||||
<item name="android:popupMenuStyle">@style/PopupMenu</item>
|
||||
|
||||
<!-- Style used for bottom sheet behavior components -->
|
||||
<item name="bottomSheetStyle">@style/MwmWidget.BottomSheet</item>
|
||||
|
||||
@@ -13,7 +13,6 @@ node[shop],
|
||||
node[amenity=car_wash],
|
||||
node[amenity=fuel],
|
||||
node[amenity=studio],
|
||||
node[amenity=toilets],
|
||||
node[amenity=vehicle_inspection],
|
||||
node[craft],
|
||||
node[landuse=industrial][industrial=mine],
|
||||
|
||||
@@ -541,8 +541,8 @@
|
||||
|
||||
/* Voice */
|
||||
"voice" = "Voice";
|
||||
"voice_explanation" = "It's possible to pick a better voice in the system settings under *Accessibility*, *Read & Speak*, *Voices*.";
|
||||
"voice_explanation_before_version26" = "It's possible to pick a better voice in the system settings under *Accessibility*, *Spoken Content*, *Voices*.";
|
||||
"voice_explanation" = "It's possible to pick a better voice in the system settings under *Accesibility*, *Read & Speak*, *Voices*.";
|
||||
"voice_explanation_before_version26" = "It's possible to pick a better voice in the system settings under *Accesibility*, *Spoken Content*, *Voices*.";
|
||||
"unknown" = "Unknown";
|
||||
|
||||
/* Place page confirmation messages and time ago formatting */
|
||||
@@ -1045,25 +1045,25 @@
|
||||
/* Message for the bug report alert. */
|
||||
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
||||
|
||||
/* Title for the iCloud synchronization setting */
|
||||
"icloud_sync" = "iCloud Synchronization (Beta)";
|
||||
/* Title for the iCloud syncronization setting */
|
||||
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||
|
||||
/* Title for the "Enable iCloud Synchronization" alert. */
|
||||
"enable_icloud_synchronization_title" = "Enable iCloud Synchronization";
|
||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
||||
|
||||
/* Message for the "Enable iCloud Synchronization" alert. */
|
||||
/* Message for the "Enable iCloud Syncronization" alert. */
|
||||
"enable_icloud_synchronization_message" = "iCloud synchronization is an experimental feature under development. Make sure that you have made a backup of all your bookmarks and tracks.";
|
||||
|
||||
/* Title for the "iCloud Is Disabled" alert. */
|
||||
"icloud_disabled_title" = "iCloud Is Disabled";
|
||||
|
||||
/* Message for the "iCloud is Disabled" alert. */
|
||||
"icloud_disabled_message" = "Please enable iCloud for CoMaps in your Apple Account's settings to use this feature.";
|
||||
"icloud_disabled_message" = "Please enable iCloud in your device's settings to use this feature.";
|
||||
|
||||
/* Title for the "Enable iCloud Synchronization" alert's "Enable" action button. */
|
||||
/* Title for the "Enable iCloud Syncronization" alert's "Enable" action button. */
|
||||
"enable" = "Enable";
|
||||
|
||||
/* Title for the "Enable iCloud Synchronization" alert's "Backup" action button. */
|
||||
/* Title for the "Enable iCloud Syncronization" alert's "Backup" action button. */
|
||||
"backup" = "Backup";
|
||||
|
||||
/* Title for the "iCloud synchronization failure" alert. */
|
||||
|
||||
@@ -560,8 +560,8 @@
|
||||
|
||||
/* Voice */
|
||||
"voice" = "Voice";
|
||||
"voice_explanation" = "It's possible to pick a better voice in the system settings under *Accessibility*, *Read & Speak*, *Voices*.";
|
||||
"voice_explanation_before_version26" = "It's possible to pick a better voice in the system settings under *Accessibility*, *Spoken Content*, *Voices*.";
|
||||
"voice_explanation" = "It's possible to pick a better voice in the system settings under *Accesibility*, *Read & Speak*, *Voices*.";
|
||||
"voice_explanation_before_version26" = "It's possible to pick a better voice in the system settings under *Accesibility*, *Spoken Content*, *Voices*.";
|
||||
"unknown" = "Unknown";
|
||||
|
||||
/* Place page confirmation messages and time ago formatting */
|
||||
@@ -1070,25 +1070,25 @@
|
||||
/* Message for the bug report alert. */
|
||||
"bugreport_alert_message" = "Would you like to send a bug report to the developers?\nWe rely on our users as CoMaps doesn't collect any error information automatically. Thank you in advance for supporting CoMaps!";
|
||||
|
||||
/* Title for the iCloud synchronization setting */
|
||||
"icloud_sync" = "iCloud Synchronization (Beta)";
|
||||
/* Title for the iCloud syncronization setting */
|
||||
"icloud_sync" = "iCloud Syncronization (Beta)";
|
||||
|
||||
/* Title for the "Enable iCloud Synchronization" alert. */
|
||||
"enable_icloud_synchronization_title" = "Enable iCloud Synchronization";
|
||||
/* Title for the "Enable iCloud Syncronization" alert. */
|
||||
"enable_icloud_synchronization_title" = "Enable iCloud Syncronization";
|
||||
|
||||
/* Message for the "Enable iCloud Synchronization" alert. */
|
||||
/* Message for the "Enable iCloud Syncronization" alert. */
|
||||
"enable_icloud_synchronization_message" = "iCloud synchronization is an experimental feature under development. Make sure that you have made a backup of all your bookmarks and tracks.";
|
||||
|
||||
/* Title for the "iCloud Is Disabled" alert. */
|
||||
"icloud_disabled_title" = "iCloud Is Disabled";
|
||||
|
||||
/* Message for the "iCloud is Disabled" alert. */
|
||||
"icloud_disabled_message" = "Please enable iCloud for CoMaps in your Apple Account's settings to use this feature.";
|
||||
"icloud_disabled_message" = "Please enable iCloud in your device's settings to use this feature.";
|
||||
|
||||
/* Title for the "Enable iCloud Synchronization" alert's "Enable" action button. */
|
||||
/* Title for the "Enable iCloud Syncronization" alert's "Enable" action button. */
|
||||
"enable" = "Enable";
|
||||
|
||||
/* Title for the "Enable iCloud Synchronization" alert's "Backup" action button. */
|
||||
/* Title for the "Enable iCloud Syncronization" alert's "Backup" action button. */
|
||||
"backup" = "Backup";
|
||||
|
||||
/* Title for the "iCloud synchronization failure" alert. */
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#include "base/assert.hpp"
|
||||
#include "base/buffer_vector.hpp"
|
||||
|
||||
#include <execution>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
@@ -118,31 +117,27 @@ public:
|
||||
template <class FnT>
|
||||
void ForEachEnter(FnT && fn) const
|
||||
{
|
||||
std::for_each(std::execution::par_unseq, m_transitions.begin(), m_transitions.end(), [&](auto const & pair)
|
||||
for (auto const & [key, transit] : m_transitions)
|
||||
{
|
||||
auto const & [key, transit] = pair;
|
||||
|
||||
if (transit.m_forwardIsEnter)
|
||||
fn(transit.m_enterIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, true));
|
||||
|
||||
if (!transit.m_oneWay && !transit.m_forwardIsEnter)
|
||||
fn(transit.m_enterIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, false));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
template <class FnT>
|
||||
void ForEachExit(FnT && fn) const
|
||||
{
|
||||
std::for_each(std::execution::par_unseq, m_transitions.begin(), m_transitions.end(), [&](auto const & pair)
|
||||
for (auto const & [key, transit] : m_transitions)
|
||||
{
|
||||
auto const & [key, transit] = pair;
|
||||
|
||||
if (!transit.m_forwardIsEnter)
|
||||
fn(transit.m_exitIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, true));
|
||||
|
||||
if (!transit.m_oneWay && transit.m_forwardIsEnter)
|
||||
fn(transit.m_exitIdx, Segment(m_mwmId, key.m_featureId, key.m_segmentIdx, false));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void GetOutgoingEdgeList(Segment const & segment, EdgeListT & edges) const
|
||||
|
||||
@@ -4,14 +4,16 @@
|
||||
#include "routing/routing_options.hpp"
|
||||
#include "routing/world_graph.hpp"
|
||||
|
||||
#include "platform/settings.hpp"
|
||||
|
||||
#include "base/assert.hpp"
|
||||
#include "base/checked_cast.hpp"
|
||||
#include "base/exception.hpp"
|
||||
#include "base/timer.hpp"
|
||||
|
||||
#include "geometry/distance_on_sphere.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <execution>
|
||||
#include <limits>
|
||||
#include <utility>
|
||||
|
||||
@@ -319,9 +321,7 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
|
||||
|
||||
auto const & weightTimeToParent = parentVertexData.m_realDistance;
|
||||
auto const & parentJoint = parentVertexData.m_vertex;
|
||||
|
||||
auto const range = std::ranges::views::iota(0uz, firstChildren.size());
|
||||
std::for_each(std::execution::par_unseq, range.begin(), range.end(), [&, this](auto const i)
|
||||
for (size_t i = 0; i < firstChildren.size(); ++i)
|
||||
{
|
||||
auto const & firstChild = firstChildren[i];
|
||||
auto const lastPointId = lastPointIds[i];
|
||||
@@ -335,21 +335,22 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
|
||||
{ return currentPointId < lastPointId ? pointId + 1 : pointId - 1; };
|
||||
|
||||
if (IsAccessNoForSure(firstChild.GetFeatureId(), weightTimeToParent, true /* useAccessConditional */))
|
||||
return;
|
||||
continue;
|
||||
|
||||
if (IsAccessNoForSure(parent.GetRoadPoint(isOutgoing), weightTimeToParent, true /* useAccessConditional */))
|
||||
return;
|
||||
continue;
|
||||
|
||||
if (IsUTurn(parent, firstChild) && IsUTurnAndRestricted(parent, firstChild, isOutgoing))
|
||||
return;
|
||||
continue;
|
||||
|
||||
if (IsRestricted(parentJoint, parent.GetFeatureId(), firstChild.GetFeatureId(), isOutgoing, parents))
|
||||
return;
|
||||
continue;
|
||||
|
||||
RouteWeight summaryWeight;
|
||||
// Check current JointSegment for bad road access between segments.
|
||||
RoadPoint rp = firstChild.GetRoadPoint(isOutgoing);
|
||||
uint32_t start = currentPointId;
|
||||
bool noRoadAccess = false;
|
||||
do
|
||||
{
|
||||
// This is optimization: we calculate accesses of road points before calculating weight of
|
||||
@@ -359,13 +360,19 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
|
||||
// until this |rp|. But we assume that segments have small length and inaccuracy will not
|
||||
// affect user.
|
||||
if (IsAccessNoForSure(rp, weightTimeToParent, true /* useAccessConditional */))
|
||||
return;
|
||||
{
|
||||
noRoadAccess = true;
|
||||
break;
|
||||
}
|
||||
|
||||
start = increment(start);
|
||||
rp.SetPointId(start);
|
||||
}
|
||||
while (start != lastPointId);
|
||||
|
||||
if (noRoadAccess)
|
||||
continue;
|
||||
|
||||
bool forward = currentPointId < lastPointId;
|
||||
Segment current = firstChild;
|
||||
Segment prev = parent;
|
||||
@@ -389,7 +396,7 @@ void IndexGraph::ReconstructJointSegment(astar::VertexData<JointSegment, RouteWe
|
||||
|
||||
jointEdges.emplace_back(isOutgoing ? JointSegment(firstChild, prev) : JointSegment(prev, firstChild),
|
||||
summaryWeight);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void IndexGraph::GetNeighboringEdge(astar::VertexData<Segment, RouteWeight> const & fromVertexData, Segment const & to,
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#include "indexer/feature_meta.hpp"
|
||||
|
||||
#include "geometry/point2d.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <unordered_map>
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include "3party/skarupke/bytell_hash_map.hpp" // needed despite of IDE warning
|
||||
|
||||
#include <algorithm>
|
||||
#include <execution>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include <queue>
|
||||
@@ -475,8 +474,7 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
|
||||
CHECK(it != m_savedWeight.cend(), ("Can not find weight for:", vertex));
|
||||
|
||||
Weight const weight = it->second;
|
||||
auto const range = std::ranges::views::iota(0uz, edges.size());
|
||||
std::for_each(std::execution::par_unseq, range.begin(), range.end(), [&, this](auto const i)
|
||||
for (size_t i = 0; i < edges.size(); ++i)
|
||||
{
|
||||
// Saving weight of current edges for returning in the next iterations.
|
||||
auto & w = edges[i].GetWeight();
|
||||
@@ -492,7 +490,7 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
|
||||
// |parentWeights[]|. So the weight of an ith edge is a cached "weight of parent JointSegment" +
|
||||
// "parentWeight[i]".
|
||||
w = weight + parentWeights[i];
|
||||
});
|
||||
}
|
||||
|
||||
// Delete useless weight of parent JointSegment.
|
||||
m_savedWeight.erase(vertex);
|
||||
@@ -500,9 +498,8 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
|
||||
else
|
||||
{
|
||||
// This needs for correct weights calculation of FakeJointSegments during forward A* search.
|
||||
auto const range = std::ranges::views::iota(firstFakeId, edges.size());
|
||||
std::for_each(std::execution::par_unseq, range.begin(), range.end(),
|
||||
[&edges, &parentWeights](auto const i) { edges[i].GetWeight() += parentWeights[i]; });
|
||||
for (size_t i = firstFakeId; i < edges.size(); ++i)
|
||||
edges[i].GetWeight() += parentWeights[i];
|
||||
}
|
||||
|
||||
auto const vertexMwmId = vertex.GetMwmId();
|
||||
@@ -513,12 +510,12 @@ void IndexGraphStarterJoints<Graph>::GetEdgeList(astar::VertexData<Vertex, Weigh
|
||||
/// a weight of v1->v2 transition moving backward (v2 ingoing). This is impossible in current (m_savedWeight)
|
||||
/// logic, so I moved Cross-MWM penalty into separate block here after _all_ weights calculations.
|
||||
|
||||
std::for_each(std::execution::par_unseq, edges.begin(), edges.end(), [&, this](auto & e)
|
||||
for (auto & e : edges)
|
||||
{
|
||||
auto const targetMwmId = e.GetTarget().GetMwmId();
|
||||
if (targetMwmId != kFakeNumMwmId && vertexMwmId != targetMwmId)
|
||||
e.GetWeight() += m_graph.GetCrossBorderPenalty(vertexMwmId, targetMwmId);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ def multithread_run_if_one_country(func):
|
||||
kwargs.update({"threads_count": settings.THREADS_COUNT})
|
||||
# Otherwise index stage of Taiwan_* mwms continues to run after all other mwms have finished:
|
||||
elif country == 'Taiwan_North':
|
||||
kwargs.update({"threads_count": 3})
|
||||
kwargs.update({"threads_count": 5})
|
||||
elif country == 'Taiwan_South':
|
||||
kwargs.update({"threads_count": 2})
|
||||
func(env, country, **kwargs)
|
||||
|
||||
@@ -20,7 +20,7 @@ MAIN_OUT_PATH: /mnt/4tbexternal/osm-maps
|
||||
# Path to the data/ folder in the repository:
|
||||
USER_RESOURCE_PATH: ${Developer:OMIM_PATH}/data
|
||||
# Features stage only parallelism level. Set to 0 for auto detection.
|
||||
THREADS_COUNT_FEATURES_STAGE: 64
|
||||
THREADS_COUNT_FEATURES_STAGE: 0
|
||||
# Do not change it. This is determined automatically.
|
||||
NODE_STORAGE: mem
|
||||
|
||||
|
||||
@@ -31,22 +31,22 @@ python3 -m venv /tmp/venv
|
||||
echo "<$(date +%T)> Copying map generator INI..."
|
||||
cp var/etc/map_generator.ini.prod var/etc/map_generator.ini
|
||||
|
||||
GENARGS=""
|
||||
$GENARGS=""
|
||||
|
||||
if [ $MWMTEST == "true" ]; then
|
||||
if [ $MWMTEST -gt 0 ]; then
|
||||
echo "Marking as a test (non-prod) generation"
|
||||
# TODO: output test maps into e.g. osm-maps-test/ and use a different generation.log
|
||||
GENARGS="$GENARGS -s=test"
|
||||
$GENARGS="$GENARGS -s=test"
|
||||
fi
|
||||
|
||||
if [ $MWMCONTINUE == "true" ]; then
|
||||
if [ $MWMCONTINUE -gt 0 ]; then
|
||||
echo "Continuing from preexisting generator run"
|
||||
GENARGS="$GENARGS --continue"
|
||||
$GENARGS="$GENARGS --continue"
|
||||
fi
|
||||
|
||||
if [[ -n $MWMCOUNTRIES ]]; then
|
||||
echo "Generating only specific maps for [$MWMCOUNTRIES]"
|
||||
GENARGS="$GENARGS --countries=$MWMCOUNTRIES"
|
||||
$GENARGS="$GENARGS --countries=$MWMCOUNTRIES"
|
||||
fi
|
||||
|
||||
cd ~/comaps/tools/python
|
||||
|
||||
Reference in New Issue
Block a user